Buforowanie żądań obrazu przez PHP - nie wysłano If-Modified-Since
Obsługuję obrazy przez php i mam pewne problemy z ustawieniem odpowiedzi na 304 nagłówki, aby zaoszczędzić na czasie ładowania.
Większość poniższego kodu znalazłem na php.net. Działa, jednak ZAWSZE odpowiada 200.Z jakiegoś powodu nagłówek If-Modified-Since nie jest odbierany na żadne żądania, chociaż początkowo wysyłam nagłówek Last-Modified. Robi się to na serwerze apache. Jakiś pomysł, co może być nie tak?
Ta strona załaduje obraz z dysku i wyświetli go w przeglądarce wraz z wysłaniem nagłówka Last-Modified. Jeśli odświeżysz stronę, przeglądarka nie wysyła nagłówka If-Modified-Since, tak jak powinien.
<code>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); } </code>