Respuestas:
Cache-Control
fue introducido en HTTP / 1.1 y ofrece más opciones que Expires
. Se pueden usar para lograr lo mismo, pero el valor de los datos Expires
es una fecha HTTP, mientras que Cache-Control
max-age le permite especificar una cantidad de tiempo relativa para que pueda especificar "X horas después de que se solicitó la página".
El control de caché HTML es una pregunta muy similar y tiene un buen enlace a un tutorial de caché que debería responder la mayoría de sus preguntas (por ejemplo, http://www.mnot.net/cache_docs/#EXPIRES ). En resumen, sin embargo, Expires
se recomienda para recursos estáticos como imágenes y Cache-Control
cuando necesita más control sobre cómo se realiza el almacenamiento en caché.
Si está utilizando una red CDN (Cloud Delivery Network), le recomiendo usar Cache-Control con un tiempo máximo en segundos. Por ejemplo, Cache-Control: max-age = 604800. Esto evita los picos de solicitud a su servidor de origen: con "Vence el Mié, 30 Oct 20xx 04:37:07 GMT" todos los navegadores lo solicitarán al mismo tiempo.
cache-control
. Así que no veo por qué habría picos de solicitudes cuando se usaExpires:
De acuerdo con este artículo de Google Developers, HTTP Caching :
El encabezado Cache-Control se definió como parte de la especificación HTTP / 1.1 y reemplaza los encabezados anteriores (por ejemplo, Expires) utilizados para definir políticas de almacenamiento en caché de respuestas. Todos los navegadores modernos admiten Cache-Control, por lo tanto, eso es todo lo que necesitaremos.
Cache-Control se definió en HTTP / 1.1, indica a todos los mecanismos de almacenamiento en caché del servidor al cliente si pueden almacenar en caché este objeto. Se mide en segundos: Cache-Control: max-age=3600
.
El Expires
campo de encabezado proporciona la fecha / hora después de la cual la respuesta se considera obsoleta. Expira el valor es una marca de tiempo en HTTP fecha: Expires: Tue, 18 Jul 2017 16:07:23 GMT
.
Si una respuesta incluye un Cache-Control
campo con la max-age
directiva, un destinatario DEBE ignorar el Expires
campo.
Heroku devcenter tiene un excelente artículo sobre este tema.
Citando de eso,
Mientras que el encabezado Cache-Control activa el almacenamiento en caché del lado del cliente y establece la antigüedad máxima de un recurso, el encabezado Expires se usa para especificar un punto específico en el tiempo en que el recurso ya no es válido.
Excepto por las opciones privadas / públicas de CC, no veo ninguna diferencia. Cuando se utiliza Expira como "acceso más 1 año / mes / semana / día", funciona exactamente de la misma manera que CC.
Si todavía está interesado, les dejo esta recomendación directamente de los chicos de google. https://developers.google.com/speed/docs/insights/LeverageBrowserCaching Prefieren caduca antes que Cache-Control