htaccess control cache age apache .htaccess http-headers http-caching

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:

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.

Tanto el valor de edad máxima de Cache-Control como la marca de tiempo de caducidad de expiración se pueden transformar en la otra :

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 .