2010-01-28 15 views
5

Tengo problemas con un sitio en el que estoy trabajando actualmente.¿Cómo puedo desactivar el almacenamiento en caché de Tomcat por completo?

Estamos tratando de hacer que Facebook conecte el widget de comentarios. El widget se carga cada vez que hacemos una nueva solicitud que responde con un estado 200 OK. Pero cuando vuelve con un 304 Not Modified, el widget no se carga.

Todo apunta a un problema de almacenamiento en caché. Intenté cambiar el context.xml

<Context cachingAllowed="false"> 

Esto no parecía funcionar. ¿Algun consejo?

Respuesta

0

Parece que el problema es que el navegador del cliente lo almacena en caché, intente agregar un número aleatorio a su solicitud. como __rnd__= Math.random()

15

Esto no parece funcionar. ¿Algun consejo?

El atributo cachingAllowed realidad configura el almacenamiento en caché del lado del servidor, no el caché del cliente como pareces esperar.

El almacenamiento en memoria caché del lado del cliente se debe hacer con los encabezados de respuesta apropiados. Para su totalidad desactivar la caché del cliente sobre los recursos particulares, es necesario crear un Filter que escucha en el url-pattern deseada y tiene al menos las siguientes líneas dentro del doFilter() método:

response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1. 
response.setHeader("Pragma", "no-cache"); // HTTP 1.0. 
response.setDateHeader("Expires", 0); // Proxies. 

El response es aquí, por cierto el HttpServletResponse que se ha emitido desde el segundo argumento ServletResponse del método doFilter().

No se olvide de borrar la memoria caché del lado del cliente (por lo tanto, dentro de la configuración de navegador web) antes de probar todo esto :)

Cuestiones relacionadas