lo que hagas, tener cuidado con el almacenamiento en caché del lado del cliente:
Navegadores hacer todo tipo de trucos para tratar de minimizar el ancho de banda y hay muchas maneras en el protocolo HTTP para hacer eso, todo lo cual son tratados por apache, si solo está sirviendo un archivo local.
Si no lo está, entonces es su responsabilidad.
Eche un vistazo al menos a los mecanismos ETag y If-Modified-Since que son compatibles con todos los navegadores actuales y parecen ser la forma más robusta de consultar el contenido actualizado del servidor.
Una posible manera de servir a un archivo CSS para navegadores utilizando el If-Modified-Since encabezado es algo como esto (las cabeceras vacías para desactivar cualquiera de las cabeceras no almacenamiento en caché de PHP envía por defecto):
$p = 'path/to/css/file'
$i = stat($p);
if ($_SERVER['HTTP_IF_MODIFIED_SINCE']){
$imd = strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']);
if (($imd > 0) && ($imd >= $i['mtime'])){
header('HTTP/1.0 304 Not Modified');
header('Expires:');
header('Cache-Control:');
header('Last-Modified: '.date('r', $i['mtime']));
exit;
}
}
header('Last-Modified: '.date('r', $i['mtime']));
header('Content-Type: text/css');
header('Content-Length: '.filesize($p));
header('Cache-Control:');
header('Pragma:');
header('Expires:');
readfile($p);
El código usará if-modified-since-header que el navegador envía para verificar si el archivo real en el servidor ha cambiado desde la fecha que el navegador ha proporcionado. Si es así, el archivo se envía, de lo contrario, se devuelve un 304 No modificado y el navegador no tiene que volver a descargar todo el contenido (y si es lo suficientemente inteligente, también mantiene el CSS analizado en la memoria).
Hay otra mecánica que implica que el servidor envíe un cabezal ETag único para cada contenido. El cliente lo enviará de vuelta usando un encabezado If-None-Match que le permita al servidor decidir no solo en la fecha de la última modificación sino también en el contenido mismo.
Esto hace que el código sea más complicado, así que lo he omitido. FF, IE y Opera (probablemente Safari también) envían el encabezado If-Modified-Since cuando reciben contenido con un encabezado Last-Modified adjunto, por lo que funciona bien.
También tenga en cuenta que ciertas versiones de IE (o el JScript-Runtime que utiliza) todavía tienen problemas con el contenido transferido por GZIP.
Oh. Y sé que eso no forma parte de la pregunta, pero también lo hace Acrobat en algunas versiones. He tenido casos y casos de pantallas blancas mientras he servido archivos PDF con codificación de transferencia gzip.
simplemente curioso: ¿por qué la compañía anfitriona deshabilitó mod_deflate y mod_gzip ?! ¡En realidad es su interés despertarlos! – scunliffe