Hola, encontré estas funciones en internet para cachear imagenes leídas desde php:
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;
}
El código funciona bien, lo probé en un documento aparte y funciona.
Ahora, cuando lo he integrado en el código de mi red, por alguna extraña razón no funciona. La imagen siempre carga correctamente, pero desde el servidor en vez de desde la caché.
¿Alguien podría echarme una mano? Me haría un gran favor, llevo bastante tiempo comiéndome la cabeza con esto y no encuentro el problema. Gracias