Ok mañana pruebo y te cuento pero dudo que ese sea el problema, lo he mirado mucho. He llegado a la conclusión de que el causante es session_start() porque hice un script aparte para ver cual era el problema y fui quitando comandos hasta que funcionaba correctamente y resulta que sólo al quitar el de session_start funcionaba correctamente, si lo pongo deja de funcionar, no sé por qué, tendré qe investigar más.
Las funciones para cachear la imagen son las siguientes:
Código PHP:
function displayGraphicFile ($graphicFileName,$fileType) {
$fileModTime = filemtime($graphicFileName);
$headers = getRequestHeaders();
if (isset($headers['If-Modified-Since']) && (strtotime($headers['If-Modified-Since']) == $fileModTime)) {
header('Last-Modified: '.gmdate('D, d M Y H:i:s', $fileModTime).' GMT', true, 304);
} else {
header('Last-Modified: '.gmdate('D, d M Y H:i:s', $fileModTime).' GMT', true, 200);
header('Content-type: '.$fileType);
header('Content-transfer-encoding: binary');
readfile($graphicFileName);
}
}
function getRequestHeaders() {
if (function_exists("apache_request_headers")) {
if($headers = apache_request_headers()) {
return $headers;
}
}
$headers = array();
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
$headers['If-Modified-Since'] = $_SERVER['HTTP_IF_MODIFIED_SINCE'];
}
return $headers;
}
Gracias por su ayuda