Hi,
ich arbeite gerade an einem PHP Script das Dynamische Bilder ausgibt,
und hab noch ein paar Probleme damit diese Bilder vom Browser Cachen zu lassen.
Die Bilder werden auch Serverseitig gecacht (readfile).
Pfad php Script (über mod_rewrite verändert):
http://www.linsinger.com/linsinger.com/image/669m316/media/2.jpg
Pfad gecachtes Image:
http://www.linsinger.com/linsinger.com/temp/s669x316_media_2.jpg
In den meisten Anleitungen für Dynamische Bilder wird ja einfach nur:
header("Content-Type: image/jpeg");
angegeben, was dann in meinem Fall zu folgenden Headers führt:
Generiert:
HTTP/1.1 200 OK
Date: Tue, 08 Jun 2010 08:58:46 GMT
Server: Apache
X-Powered-By: PHP/4.4.0
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0,pre-check=0
Pragma: no-cache
Set-Cookie: PHPSESSID=9bb7125ee5c00893b4df1d9326072b86; path=/
Connection: close
Transfer-Encoding: chunked
Content-Type: image/jpeg
Echte Jpg:
HTTP/1.1 200 OK
Date: Tue, 08 Jun 2010 09:01:07 GMT
Server: Apache
Last-Modified: Mon, 07 Jun 2010 12:03:27 GMT
eTag: "219fde-e26c-75dce1c0"
Accept-Ranges: bytes
Content-Length: 57964
Vary: Accept-Encoding
Connection: close
Content-Type: image/jpeg
Nach einigen Stöbern bin ich nun auf diesem Stand:
header("Content-Type: image/jpeg");
header("Cache-Control: public");
header("Pragma: cache");
header("Expires: ".gmdate("D, d M Y H:i:s",time()+86400)." GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s", $datumDerOriginalDatei)." GMT");
header("ETag: ".md5($InhaltDerOriginalDatei));
Was zu folgenden Headers führt:
HTTP/1.1 200 OK
Date: Tue, 08 Jun 2010 09:02:46 GMT
Server: Apache
X-Powered-By: PHP/4.4.0
Cache-Control: public
Pragma: cache
Expires: Wed, 09 Jun 2010 09:02:46 GMT
eTag: 9f9974d82450b9d46164acb1e80352c3
Set-Cookie: PHPSESSID=9f367857471d211a84b4ae8d09a11239; path=/
Last-Modified: Tue, 25 May 2010 17:32:52 GMT
Connection: close
Transfer-Encoding: chunked
Content-Type: image/jpeg
Allerdings scheint das generierte Bild immer noch nicht vom Browser
gecacht zu werden, an welchen Headers könnte das liegen?
thx, mfg lindsey