Christian Seiler: dyamisch gen. Bild als Teil von Seite darstellen

Beitrag lesen

Hallo Matthias,

Wenn die URL die gleiche ist und korrekte Caching-Header gesendet werden: ja.

Was müsste ich denn im header angeben?

Vorneweg: Das betrifft eigentlich unr Lösungsansatz 2.

Das PHP-Script, das das Bild ausgibt, darf auf *keinen* Fall einen Cache-Control: no-cache, Pragma: no-cache oder ähnliches senden.

Fangen wir mit dem Cache-Control-Header an. Dieser sollte so aussehen:

Cache-Control: private, max-age=3600, must-revalidate

Das 'private' bewirkt, dass kein Proxy das Bild cachen darf. Das max-age=3600 bewirkt, dass die Datei nicht länger als 3600 Sekunden im Browsercache bleiben darf. (Du darfst an dem Wert natürlich drehen) Das must-revalidate bewirkt, dass der Browser nach ablauf des max-age-Werts auch wirklich das Bild nocheinmal anfordert.

Nun brauchst Du noch eine Expires-Header. Dieser muss das Datum angeben, bei dem das Bild 'ausläuft', also der Browser es zwangsläufig nocheinmal anfordern _muss_:

Expires: Fri, 30 Oct 1998 14:19:41 GMT

Das Datum muss _exakt_ in diesem Format angegeben werden. Es sollte möglichst der gleiche Zeitpunkt wie 'aktuelle Zeit + die Angabe bei max-age' sein. Bei PHP dürften Dir die Funktionen gmdate() und time() dafür nützlich sein.

Noch etwas: Ich habe hier die Header so geschrieben, wie sie in der HTTP-Kommunikation dann auch aussehen; in PHP musst Du sie natürlich so erzeugen:

header ('Cache-Control', 'private, ...');
header ('Expires', '...');

Wenn Du das Bild zwischenspeicherst (Lösungsvorschlag 3) dann sollte der HTTP-Server sich automatisch um so etwas kümmern.

Viele Grüße,
Christian