imagettftext und browser cache
hanns
- php
hallo,
ich habe ein großes transfervolumen auf
meiner website festgestellt.
ich erzeuge bilder mit imagettftext,
also bild mit text.
diese bilder werden von den usern sehr oft
aufgerufen.
frage: werden die aus dem browser-cache geholt
oder werden die immer wieder neu von meinem server
abgerufen???
src="phpgrafik433.php"
was kann ich tun, damit die nicht neu geladen,
sondern aus dem cache genommen werden?
gruss
hanns
Hi,
frage: werden die aus dem browser-cache geholt
oder werden die immer wieder neu von meinem server
abgerufen???src="phpgrafik433.php"
Per Default ist PHP so eingestellt, dass die Scripte HTTP-Header erzeugen, die das Cashing unterbinden sollen.
was kann ich tun, damit die nicht neu geladen,
sondern aus dem cache genommen werden?
Entsprechend andere Header ausgeben - siehe Manual bzgl. header.
Und darüber, ob es u.U. sinnvoll wäre, aus den Bildern statische Dateien auf Platte zu erzeugen, sollte man auch nachdenken.
MfG ChrisB
Entsprechend andere Header ausgeben - siehe Manual bzgl. header.
danke!!!
aber wenn ich andere header ausgebe, kann ich das dann
spezielle nur für die grafiken tun, weil die anderen php-seiten
werden immer neu erzeugt und müssen bzw. sollen immer neu geladen
werden.
Hallo,
aber wenn ich andere header ausgebe, kann ich das dann spezielle nur für die grafiken tun, weil die anderen php-seiten werden immer neu erzeugt und müssen bzw. sollen immer neu geladen werden.
natürlich, HTTP-Header gelten ja immer nur für die Ressource, mit der sie gesendet werden.
Ciao,
Martin
natürlich, HTTP-Header gelten ja immer nur für die Ressource, mit der sie gesendet werden.
wie sieht denn der code aus?
das gegenteil von diesem hier?
wenn ja, wie lautet das gegenteil?
<?php
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
?>
Hallo,
»» natürlich, HTTP-Header gelten ja immer nur für die Ressource, mit der sie gesendet werden.
wie sieht denn der code aus?
das wird wohl eine header()-Anweisung mit einem gültigen HTTP-Header als Parameter sein. ;-)
das gegenteil von diesem hier?
wenn ja, wie lautet das gegenteil?
Gute Frage. Was ist das Gegenteil von einer Ziege?[*]
Die HTTP-Spec legt nahe, dass ein Expires-Header für deine Aufgabenstellung wohl geeignet wäre.
So long,
Martin
[*] Zu einer sprachlich unsinnigen Verwendung des Begriffs "Gegenteil" sagte mein Chemielehrer einst zu einem Schüler: "Wenn du Jörg heißt, und ich Hermann, das ist das doch nicht das Gegenteil, sondern bloß etwas anderes!"
Hello,
ich habe ein großes transfervolumen auf
meiner website festgestellt.ich erzeuge bilder mit imagettftext,
also bild mit text.diese bilder werden von den usern sehr oft
aufgerufen.frage: werden die aus dem browser-cache geholt
oder werden die immer wieder neu von meinem server
abgerufen???
Das entscheidet der jeweilige Browser.
Bei passender Einstellung (Normalfall) schaut der bei jedem Request erst im Cache nach, ob er dort einen Eintrag findet.
Wenn Du beim Ausliefern der Ressource einen Header mitsendest:
z.B:
$last_modified = @gmdate('D, d M Y H:i:s',@filemtime(PICPATH.$filename)).' GMT';
header ("Last-Modified: $last_modified");
dann wird der Browser beim Anfragen vermutlich einen Request-Header mitsenden:
$_SERVER['HTTP_IF_MODIFIED_SINCE']
Den kannst Du dann nach entsprechender Decodierung mit dem aktuellen $last_modified vergleichen
und wenn Gleichheit vorliegt, dem Browser mitteilen, dass er bitte seinen Cache benutzen soll:
header("HTTP/1.0 304 Not Modified");
header("Cache-Control: max-age=86400, must-revalidate");
und z.B. erst nach Ableuf eines Tages wieder einen Request senden soll, also solange _nur_ seinen Cache benutzen soll.
Es sind also mehrere Dinge zu beachten.
Wie ist der Browser überhaupt drauf?
Der IE regelt das z.B. so:
Kurz gesagt:
Wenn Du beim Ausliefern von Ressourcen keinen Zeitstempel und keine Gültigkeitsdauer dafür mitsendest, kann der Browser diese nicht beachten. Du kannst auf dem Server also nicht sicher entscheiden, ob die Ressource neu erstellt und vollständig ausgeliefert werden muss, weil Du nicht weißt, welchen Stand der Browser bereits kennt.
Schau dir die entsprechenden Request-Header des Browsers an.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
vielen dank!
hanns
was kann ich tun, damit die nicht neu geladen,
sondern aus dem cache genommen werden?
»
http://phpperformance.de/http-cache-control-ein-buch-mit-sieben-siegeln/
Peter