Wie Bild im Browsercache halten?

Cusco

Erfahrenes Mitglied
Hi,

mein Skript benötigt eine Session um ein Bild vom User dem die Session (Und das Bild) gehört über PHP auszugeben. Das Problem dabei ist das das Bild leider nicht im Browser-Cache landet sondern jedes mal neu geladen wird. Wie kann man den Browser zwingen das Bild im Cache aufzunehmen um den Traffic zu minimieren? Jedes Bild besitzt dabei seine eigene Adresse wie /index.php?useroption=bild&bildid=*id-nr*
 
Eigentlich müsstest du dem Bild, da es einzelnd geladen wird, auch per [phpf]header[/phpf] zusätzliche HTTP Header mitgeben können.

Welche für das Caching wichtig sind, findest du in der HTTP Referenz:
HTTP/1.1 Caching in HTTP
 
Der Header sieht so aus (Code auf das nötigste gekürzt):

Code:
$size = getimagesize($quelle);
$src = file_get_contents($quelle);
header('Last-Modified: '.gmdate('D, d M Y H:i:s',$bild["zeit"]).' GMT');
header('Date: '.gmdate('D, d M Y H:i:s',$bild["zeit"]).' GMT');
header("Content-type: ".$size['mime']);
header("Content-length: ".$bild["dateigroesse"]);
header('Content-disposition: inline; filename="bild'.$bild["eintrag"].".".$bild["bildtyp"].'"');
echo $src;
exit;

Ich habe es auch zusätzlich mit Content-MD5: md5($src) versucht, aber da dauert das laden der Bilder nur länger, mehr nicht. :(
 
Zuletzt bearbeitet:
Hi,

es lag nicht am Header sondern anscheint daran, das das Skript auf Session zurück greift. Ich habe das Bilderskript jetzt ausgelagert in einer extra PHP-Datei eine Sessionid wird per URL übergeben plus der BildNr. und siehe da die Bilder landen im Cache. 30 Minuten nach dem letzten Aufruf der Hauptseiten ist das Bild dann nicht mehr abrufbar.
 
Zurück