apache - control - header no cache
Diferencia entre tres reglas de expiración de.htaccess (2)
La primera regla agrega una entrada de máxima edad a Cache-Control. El navegador debe volver a buscar el documento después del tiempo en segundos que se indica aquí.
La segunda y la tercera reglas crean encabezados caducados. El navegador debe volver a buscar el documento en la fecha indicada aquí. Y el servidor tiene que hacer algunos cálculos.
Tenga en cuenta que la segunda regla obliga a actualizar todos los navegadores y todos los recursos al mismo tiempo, mientras que la tercera y la última invalidan la memoria caché del navegador según el tiempo de solicitud. Verá la diferencia si tiene un sitio con mucho tráfico: es probable que obtenga un pico espectacular el 15 de abril de 2020. :)
Como regla general: use max-age. Está muy bien compatible y no tiene la posibilidad de crear una fecha no válida. Además, es más corto.
Otras lecturas:
Tutorial de almacenamiento en caché para autores web y webmasters : lectura obligatoria para cada desarrollador web.
Opera MAMA: encabezados HTTP : algunas estadísticas interesantes, especialmente la tabla de frecuencias expira completas, son divertidas:
10 URL declararon autoritativamente que han expirado (y probablemente están momificados) al caducar "01 jan 0001".
¿Cuál es la diferencia entre las siguientes tres reglas de .htaccess y cuándo usar cada una, ¿hay casos de uso especial que prefieran una sobre la otra ?:
Header set Cache-Control "max-age=290304000"
Header set Expires "Thu, 15 Apr 2020 20:00:00 GMT"
ExpiresDefault "access plus 10 years"
Header
es una directiva de mod_headers que permite modificar los campos de encabezado HTTP. En este caso, el Header set
efectivamente los campos de encabezado mencionados Cache-Control y Expira , por lo que se sobrescribirá un campo de encabezado ya existente.
La primera directiva establece el campo de cabecera Cache-Control con el valor max-age=290304000
, que describe la vida útil de la frescura en 290304000 segundos en relación con el tiempo de respuesta.
A diferencia de eso, la segunda directiva establece el campo de cabecera Expira con el valor Thu, 15 Apr 2020 20:00:00 GMT
que describe la vida útil de la frescura con un valor de tiempo absoluto.
4.2.1. Cálculo de la vida útil de la frescura
Un caché puede calcular la duración de la frescura (denotada como freshness_lifetime) de una respuesta utilizando la primera coincidencia de los siguientes:
...
Si la directiva de respuesta de máxima edad ( Sección 5.2.2.8 ) está presente, use su valor, o
Si el campo de encabezado de respuesta Vence ( Sección 5.3 ) está presente, use su valor menos el valor del campo de encabezado de respuesta de fecha, o
...
Pero si ambos están presentes, se prefiere la edad máxima de Cache-Control sobre Caduca :
Si una respuesta incluye un campo de control de caché con la directiva de máxima edad ( Sección 5.2.2.8 ), un destinatario DEBE ignorar el campo Expira. Del mismo modo, si una respuesta incluye la directiva s-maxage ( Sección 5.2.2.9 ), un destinatario de memoria caché compartida DEBE ignorar el campo Expira. En ambos casos, el valor en Expires solo está destinado a destinatarios que aún no han implementado el campo Cache-Control.
En lugar de configurar manualmente estos campos de encabezado de control de caché HTTP, la directiva exp_Expires ExpiresDefault
permite una fácil configuración del almacenamiento en caché de HTTP. La duración de la frescura puede describirse con un valor absoluto o con un valor relativo, ya sea relativo al tiempo de respuesta (es decir, access
/ now
) o relativo al tiempo de modificación del archivo solicitado (es decir, modification
). Utiliza tanto Cache-Control como Expires .
En este caso, la tercera directiva establece que la vida útil de la frescura predeterminada es de 10 años a partir del momento de la respuesta.
Usaría mod_expires para el control de caché HTTP en lugar de hacerlo manualmente con Header
. Es mucho más conveniente, permite tiempos de frescura relativos y absolutos y utiliza Cache-Control y Expira .