• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

[ERLEDIGT] Cache für Grafik

thuemmy

Aktives Mitglied
Hallo Forum,

bei meinem aktuellen Projekt habe ich eine Seite, deren Hauptbestandteil ein Lageplan (jpg) ist: Kleingärtnerverein Priessnitz-Morgenröte - Freie Gärten . Der Plan ändert sich, gerade im Sommer 1-2 mal im Monat und soll dann natürlich immer in der aktuellen Version angezeigt werden. Gestern abend habe ich festgestellt, dass trotz diverser Anweisungen in PHP
PHP:
<?phpheader("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Datum aus Vergangenheit
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");// immer geändert
header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache"); // HTTP/1.0?>
und in HTML
HTML:
<meta HTTP-EQUIV="Pragma" content="no-cache">
dass die Grafik nicht geändert wurde. Gibt es da 'nen kleinen Trick um das zu beheben, oder muss ich mir da was anderes einfallen lassen?
 
Werbung:
Nicht die HTML-Seite soll diese Header verschicken, sondern das Bild selbst ;)


Momentan werden diese geschickt:
Code:
Date: Sun, 14 Apr 2013 17:31:09 GMT
Server: Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/0.9.8r
Last-Modified: Sat, 13 Apr 2013 20:00:02 GMT
Etag: "95cb0fc-132eb-4da437715a1c4"
Accept-Ranges: bytes
Content-Length: 78571
Content-Type: image/jpeg

Das verursacht das Caching :)
 
Und die HTTP-Header vom Apache bzgl. Caching kann man z.B. mit dem Apache-Modul mod_expire beeinflussen.
 
Werbung:
Und die HTTP-Header vom Apache bzgl. Caching kann man z.B. mit dem Apache-Modul mod_expire beeinflussen.
Das werde ich mir auf jeden Fall zu Gemüte führen.

@ Asterixus - Das Last-Modified-Datum das passt, das mit dem Bild aus dem Cache ist mir ja auch erst danach aufgefallen.
 
@ threadi - lt. phpinfo() ist das Modul mod_expire nicht eingebunden.

@ Asterixus - ich vermute mal, dass ich in das Bild keinerlei Cache-Direktiven reinschreiben kann?!

@ all - Wie würde es sich denn das Verhalten auf den Cache auswirken, wenn ich an das src-Attribut im <img>-Tag einen Parameter, der sich laufend verändert, anhänge, z.B. so:
PHP:
<img src="bilder/freie-gaerten/gartenfrei.jpg?wann=<?php echo time(); ?>" width="800" height="531" alt="Freie Gärten" usemap="#Gartenuebersicht">
Da habe ich zumindest im Internet einige Hinweise dazu gefunden.

Wenn das nicht funktioniert, dann ist mir auch noch die Variante eingefallen, beim Erstellen des Bildes den Bildnamen so zu verändern, dass er immer eindeutig ist, zum Beispiel durch das Anhängen des timestamp, aus gartenfrei.jpg wird z.B. gartenfrei1366003335.jpg
 
Werbung:
Ja, das wäre auch eine Möglichkeit. Der Parameter sollte den letzten Änderungszeitpunkt der Bilddatei als UNIX-Timestamp enthalten. Du musst dazu aber nicht den Namen selbst ändern, es reicht das wie in deinem Quellcode-Beispiel als Parameter ans Bild anzuhängen.
 
Der Parameter sollte den letzten Änderungszeitpunkt der Bilddatei als UNIX-Timestamp enthalten.
Das ist eine gute Lösung, ich hätte nämlich einfach immer den aktuellen UNIX-Timestamp (beim Abruf) als Paramter drangehauen, da wäre aber jedes mal der Cache umgangen worden, und mit Deiner Lösung nur wirklich dann, wenn sich auch was am Bild geändert hat.

Genauso werde ich das machen. Vielen Dank.
 
Zurück
Oben