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?

Exemplo aqui

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>

questionAnswers(5)

yourAnswerToTheQuestion