Cache de pedidos de imagem através do PHP - If-Modified-Since não sendo enviado
Eu estou servindo imagens através do php e tendo alguns problemas para configurá-lo para responder com 304 cabeçalhos para economizar tempo de carregamento.
A maior parte do código abaixo eu encontrei no php.net. Ele funciona, no entanto sempre responde com 200.Por algum motivo, o cabeçalho If-Modified-Since não está sendo recebido em nenhuma solicitação, mesmo que eu esteja enviando o cabeçalho Last-Modified inicialmente. Isso está sendo feito em um servidor apache. Alguma ideia do que pode estar errado?
Esta página carregará a imagem do disco e a exibirá no navegador, junto com o envio de um cabeçalho Last-Modified. Se você atualizar a página, o navegador não enviará um cabeçalho If-Modified-Since como deveria.
<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>