2010-01-28 8 views
5

Ho problemi con un sito in cui al momento sto lavorando.Come posso disabilitare completamente la memorizzazione nella cache di Tomcat?

Stiamo tentando di creare un widget per i commenti su Facebook. Il widget viene caricato ogni volta che viene creata una nuova richiesta che risponde con uno stato 200 OK. Ma quando ritorna con un 304 non modificato il widget non verrà caricato.

Tutto fa riferimento a un problema di memorizzazione nella cache. Ho provato changin il context.xml

<Context cachingAllowed="false"> 

Questo non sembra funzionare. Qualche consiglio?

risposta

0

Sembra che il problema sia nel browser del client che lo memorizza nella cache, provare ad aggiungere un numero casuale alla richiesta. come __rnd__= Math.random()

15

Questo non sembra funzionare. Qualche consiglio?

Il cachingAllowed attributo realtà configura il caching lato server, non la cache sul lato client, come ti sembra di aspettare.

La memorizzazione nella cache del lato client deve essere eseguita con le intestazioni di risposta appropriate. Per disattivare completamente la cache lato client sulle risorse particolari, è necessario creare un Filter in ascolto sul url-pattern desiderato e ha almeno le seguenti righe all'interno del metodo doFilter():

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. 

Il response è qui tra l'altro il HttpServletResponse che è stato ritirato dal secondo argomento ServletResponse del metodo doFilter().

Non dimenticare di svuotare la cache lato client (quindi, all'interno della configurazione del browser) prima di testare tutto :)