Caché de solicitudes de imagen a través de PHP - If-Modified-Since no se está enviando
Estoy sirviendo imágenes a través de php y tengo algunos problemas para configurarlo para responder con 304 encabezados para ahorrar tiempo de carga.
La mayoría del código a continuación lo encontré en php.net. Funciona, sin embargo SIEMPRE responde con 200.Por alguna razón, el encabezado If-Modified-Since no se recibe en ninguna solicitud, a pesar de que estoy enviando el encabezado Last-Modified inicialmente. Esto se está haciendo en un servidor apache. ¿Alguna idea de lo que podría estar mal?
Esta página cargará la imagen del disco y la mostrará al navegador, junto con el envío de un encabezado de última modificación. Si actualiza la página, el navegador no envía un encabezado If-Modified-Since como debería.
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);
}