Quiero encontrar un conjunto mínimo de encabezados que funcionen con "todos" los cachés y navegadores (¡también cuando se usa HTTPS !)
En mi sitio web, tendré tres tipos de recursos:
(1) Siempre almacenable en caché (público / igual para todos los usuarios)
Ejemplo: 0A470E87CC58EE133616F402B5DDFE1C.cache.html ( generado automáticamente por GWT )
A estos archivos se les asigna automáticamente un nuevo nombre cuando cambian de contenido (según el MD5).
Deben almacenarse en caché tanto como sea posible, incluso cuando se usa HTTPS (así que supongo que debo configurar
Cache-Control: public
, ¿especialmente para Firefox?)No deberían exigir que el cliente realice un viaje de ida y vuelta al servidor para validar, si el contenido ha cambiado.
(2) Cambio ocasional (público / igual para todos los usuarios)
Ejemplos: index.html, mymodule.nocache.js
Estos archivos cambian su contenido sin cambiar la URL, cuando se implementa una nueva versión del sitio.
Se pueden almacenar en caché, pero probablemente necesiten un viaje de ida y vuelta para revalidarlos cada vez.
(3) Individual para cada solicitud (privado / específico del usuario)
Ejemplo: respuestas JSON
- Estos recursos nunca deben almacenarse en caché sin cifrar en el disco bajo ninguna circunstancia. (Excepto que tal vez tenga algunas solicitudes específicas que podrían almacenarse en caché).
Tengo una idea general sobre qué encabezados probablemente usaría para cada tipo, pero siempre hay algo que podría faltar.
fuente
Respuestas:
Probablemente usaría estas configuraciones:
Cache-Control: max-age=31556926
- Las representaciones pueden almacenarse en caché mediante cualquier caché. La representación almacenada en caché debe considerarse nueva durante 1 año:Cache-Control: no-cache
- Cualquier caché permite almacenar en caché las representaciones. Pero los cachés deben enviar la solicitud al servidor de origen para su validación antes de liberar una copia en caché.Cache-Control: no-store
- Los cachés no deben almacenar en caché la representación bajo ninguna condición.Consulte el Tutorial de almacenamiento en caché de Mark Nottingham para obtener más información.
fuente
Los casos uno y dos son en realidad el mismo escenario. Debe configurar
Cache-Control: public
y luego generar una URL que incluya el número de compilación / versión del sitio para que tenga recursos inmutables que podrían durar para siempre. También desea configurar elExpires
encabezado un año o más en el futuro para que el cliente no necesite emitir un cheque de actualización.Para el caso 3, puede hacer todo lo siguiente para una máxima flexibilidad:
fuente
https://www.example.com/
c) Quiero que los marcadores siempre se refieran a la versión más reciente de mi sitio (imagínese, los marcadores de una pregunta de stackoverflow contendrían el número de compilación del sitio).