Estoy usando Amazon S3 para entregar activos estáticos para mi sitio web. Quiero que los navegadores guarden en caché estos activos durante el mayor tiempo posible. ¿Qué encabezados de metadatos debo incluir con mis activos?
Cache-Control: max-age=???
http
caching
http-headers
cache-control
Casey Flynn
fuente
fuente
Respuestas:
Generalmente se aconseja un año como valor máximo estándar. Ver RFC 2616 :
Aunque eso se aplica al
expires
estándar anterior , tiene sentido aplicarlocache-control
también en ausencia de una guía de estándares explícita. Es tan largo como generalmente debería necesitar de todos modos y elegir cualquier valor arbitrariamente más largo podría romper algunos agentes de usuario. Entonces:fuente
Considere no almacenarlo durante "el mayor tiempo posible" y, en cambio, conformarse con el tiempo que sea razonable. Por ejemplo, es poco probable que necesite almacenarlo en caché durante más de, digamos, 10 años ... ¿verdad?
El RFC analiza la edad máxima aquí: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.3
Eric Lawrence dice que antes de IE9, Internet Explorer trataría como obsoleto cualquier recurso con un valor de Cache-Control: max-age superior a 2147483648 (2 ^ 31) segundos, aproximadamente 68 años ( http://blogs.msdn.com/b /ie/archive/2010/07/14/caching-improvements-in-internet-explorer-9.aspx ).
Otros agentes de usuario, por supuesto, variarán, así que ... intente elegir un número que sea poco probable (¡más que probable!) Que cause un desbordamiento. La edad máxima superior a 31536000 (un año) tiene poco sentido e informalmente se considera un valor máximo razonable.
fuente
Las personas que crearon la recomendación de un máximo de 1 año de almacenamiento en caché no lo pensaron bien.
En primer lugar, si un visitante recibe un archivo en caché desactualizado, ¿por qué proporcionaría algún beneficio que cargue repentinamente una versión nueva después de 1 año? Si un archivo tiene TTL de 1 año, desde una perspectiva funcional, obviamente significa que el archivo no está destinado a ser modificado en absoluto.
Entonces, ¿por qué necesitaría uno más de 1 año?
1) ¿Por qué no? No tiene ningún propósito para decirle al navegador de los visitantes "oye, este archivo tiene 1 año, podría ser una idea comprobar si se ha actualizado".
2) Servicios CDN.La mayoría de las redes de entrega de contenido utilizan el encabezado de la caché para decidir cuánto tiempo se entregará un archivo de manera eficiente desde el servidor de borde. Si tiene 1 año de control de caché para los archivos, en algún momento comenzará a volver a solicitar los archivos no modificados del servidor de origen, y la caché de borde deberá volver a completarse por completo, lo que provocará cargas más lentas para el cliente e innecesarias. llamadas al origen.
¿Cuál es el punto de tener como máximo 1 año? ¿Qué navegadores se ahogarán con una cantidad establecida superior a 31536000?
fuente