Caching-Bilder-requests durch PHP - If-Modified-since nicht gesendet

Ich diene Bilder durch php und habe einige Probleme bei der Einrichtung zu reagieren 304-Header zu speichern, auf die Ladezeit.

Meisten der code unten habe ich gefunden auf php.net. Es funktioniert, jedoch antwortet IMMER mit 200. Aus irgendeinem Grund die If-Modified-since-header nicht empfangen, die auf alle Anfragen, auch wenn ich das senden der Last-Modified-header zunächst. Dies geschieht auf einem apache-server. Irgendeine Idee was falsch sein könnte?

Beispiel hier.

Dieser Seite laden Sie das Bild von der Festplatte und zeigt Sie im browser, zusammen mit dem senden eines Last-Modified-header. Wenn Sie die Seite aktualisieren, browser, nicht senden eine If-Modified-since-header, wie es sollte.

define('SITEPATH', (dirname($_SERVER['SCRIPT_NAME']) == '/') ? '/' : dirname($_SERVER['SCRIPT_NAME']).'/');

$load_path = $_SERVER['DOCUMENT_ROOT'] . SITEPATH . 'fpo_image.jpg';

//Get headers sent by the client.
$headers    = apache_request_headers(); 
$file_time  = filemtime($load_path);

header('Cache-Control: must-revalidate');
header('Last-Modified: '.gmdate('D, d M Y H:i:s', $file_time).' GMT');

if (isset($headers['If-Modified-Since']) && (strtotime($headers['If-Modified-Since']) == $file_time)) {

    header('HTTP/1.1 304 Not Modified');
    header('Connection: close');

} else {

    header('HTTP/1.1 200 OK');
    header('Content-Length: '. filesize($load_path));
    header('Content-type: image/jpeg');                         

    readfile($load_path);

}
InformationsquelleAutor Louis W | 2009-06-24
Schreibe einen Kommentar