2009-06-12 17 views
5

estoy usando un filtro de servlet simple que obliga al navegador para saltar el almacenamiento en caché de algunos recursos del servidor:mejor manera de desactivar el almacenamiento en caché del cliente

 
    Cache-Control: private 
    Pragma: 

Esto funciona bien en Internet Explorer pero no funciona bien con Firefox 3.0.10. Terminé de escribir este código:

 
    Cache-Control: no-cache, no-store, must-revalidate, max-age=-1 
    Pragma: no-cache, no-store 
    Expires: -1 // -1 is the unix time, the client receives a date in 1969 :) 
    Last-Modified: -1 // ditto 

Esto obliga a Firefox a no almacenar en caché nada. ¿Qué hay de otros navegadores? ¿Qué hay de las mejores prácticas en los encabezados de almacenamiento en caché que funciona en los principales navegadores?

Respuesta

7

Drupal 6 hace esto (que funciona en todos los navegadores conocidos por mí):

  • Expira: Dom 19 Nov 1978 05:00:00 GMT
  • Last-Modified: Vier 12 Jun 2009 08:01:46 GMT (la fecha de modificación real)
  • cache-control: tienda, no-cache, debe-revalidate, post-check = 0, pre-check = 0

Sin encabezado pragma en este caso. No estoy seguro de por qué su ejemplo no funciona, podría ser las marcas de tiempo negativas, esto funciona en ~ 250.000 sitios Drupal :)

+0

gracias por compartir esta información – dfa

1

Su solución inicial no funcionaba de forma fiable porque:

  • Cache control es utilizado para especificar directivas que DEBEN obedecer todos los mecanismos de caché a lo largo de la cadena de solicitud/respuesta. Los únicos mecanismos que conozco son los proxies, por lo que los agentes de usuario no están obligados por él.
  • El encabezado Pragma: no incluye un valor. No estoy seguro de que sea legal, en términos del protocolo HTTP.
+0

Pragma sin valor se maneja bien por IE :) – dfa

+0

Sí, por IE. Usted específicamente pidió otros navegadores. Además, dije que la solución no funcionaba de manera confiable, no que no funcionaba. –

Cuestiones relacionadas