Mi archivo CSS es en realidad un archivo PHP que se sirve con el tipo de contenido text/css
para que pueda usar variables PHP en ese archivo. style.php
se parece a esto:encabezados de caché para css dinámico (generado a través de PHP)
<?php
header('Content-Type: text/css');
$bgColor = '#000';
?>
body { background:<?php print $bgColor; ?>; }
Funciona como se esperaba, pero estoy un poco preocupado si el navegador almacena en caché el archivo CSS creado de forma dinámica.
Cuando miro las solicitudes en firebug, me parece que el navegador está cargando style.php
de nuevo cada vez que recargo la página.
ya he intentado añadir estas cabeceras de caché:
header('Cache-control: must-revalidate');
header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 60 * 60 * 24) . ' GMT');
Pero no hubo suerte. El archivo aún se carga cada vez que se carga la página. ¿Cuáles son los encabezados apropiados para obligar al navegador a almacenar en caché el archivo durante un cierto período de tiempo?
De acuerdo con la especificación HTTP/1.1, eso no es lo que se debe a validar se supone que significa - que sólo se supone que entran en juego después de que el contenido almacenado en caché se ha vuelto rancio (como se indica por el Expira encabezado, o un valor máximo de edad dentro de Cache-Control), pero algunos navegadores parecen ignorar la especificación y enviar la solicitud de todos modos. 'público' no es realmente aplicable, a menos que la conexión esté autenticada. Yo usaría 'Cache-Control: max-age = 86400' para reforzar el tiempo en el encabezado Expires. –
@Brock Batsell: gracias por el comentario! Eso lo aclaró y funciona ahora con max-age = XXXX – Max
Si se cambia el contenido del archivo, el archivo solicitado no se actualizará. El OP solicita que el archivo no se almacene en caché si se cambia el contenido. Si el contenido del archivo no ha cambiado, debe almacenarse en caché. El código que proporcionó activa la función de "almacenamiento en caché". No resuelve el problema del OP. –