dav133
2010-04-02, 12:05:58
Hi,
ich hab ein Problem: Ich möchte per PHP jpeg-Files auslieferen, die nicht per HTTP erreichbar sind. Dazu leite ich per mod-rewrite mit folgendem Htaccess-schnippsel alle Anfragen auf meinen /images - Ordner um
RewriteEngine On
RewriteRule (.*) getimage.php?$1 [L]
und lade das Bild dann aus dem nicht per HTTP zugänglichen Bereich:
<?php
header('Content-Type: image/jpeg');
readfile('../../data/'.$_SERVER['QUERY_STRING']);
?>
Anforderung an das Script ist, dass das Caching genauso intelligent funktioniert wie wenn ich das Bild direkt aufrufen würde. Ergo soll es nur beim ersten mal laden, das Bild in den Cache stecken und dann bei einer Veränderung wieder eine neue Kopie anfordern. Ich kann leider auch mit einem 304 (not modified) nicht leben, da hier ja die Datei ebenfalls angefragt wird. Wenn ich oben einen Cache-Header reinhaue der dsa Bild auf jahrhunderte im Cache hält, wird es zwar nicht mehr angefragt, allerdings gehen auch eventuelle Änderungen am Bild unter.
Sowas kommt also nicht in Frage:
<?php
header("Expires: ".gmdate("D, d M Y H:i:s",time()+100000000). "GMT");
?>
Jemand ne Idee? Die Absicht ist ganz kurzgefasst eigentlich nur, die Bilder ausserhalb von htdocs/ zu legen und sie trotzdem zugreifbar zu machen, allerdings das intelligente Caching beizubehalten.
lg
ich hab ein Problem: Ich möchte per PHP jpeg-Files auslieferen, die nicht per HTTP erreichbar sind. Dazu leite ich per mod-rewrite mit folgendem Htaccess-schnippsel alle Anfragen auf meinen /images - Ordner um
RewriteEngine On
RewriteRule (.*) getimage.php?$1 [L]
und lade das Bild dann aus dem nicht per HTTP zugänglichen Bereich:
<?php
header('Content-Type: image/jpeg');
readfile('../../data/'.$_SERVER['QUERY_STRING']);
?>
Anforderung an das Script ist, dass das Caching genauso intelligent funktioniert wie wenn ich das Bild direkt aufrufen würde. Ergo soll es nur beim ersten mal laden, das Bild in den Cache stecken und dann bei einer Veränderung wieder eine neue Kopie anfordern. Ich kann leider auch mit einem 304 (not modified) nicht leben, da hier ja die Datei ebenfalls angefragt wird. Wenn ich oben einen Cache-Header reinhaue der dsa Bild auf jahrhunderte im Cache hält, wird es zwar nicht mehr angefragt, allerdings gehen auch eventuelle Änderungen am Bild unter.
Sowas kommt also nicht in Frage:
<?php
header("Expires: ".gmdate("D, d M Y H:i:s",time()+100000000). "GMT");
?>
Jemand ne Idee? Die Absicht ist ganz kurzgefasst eigentlich nur, die Bilder ausserhalb von htdocs/ zu legen und sie trotzdem zugreifbar zu machen, allerdings das intelligente Caching beizubehalten.
lg