Come disabilitare la memorizzazione nella cache di Tomcat? Sto riscontrando strani problemi con i file statici


26

Come posso impedire a Tomcat di memorizzare nella cache? Ho file CSS e HTML di base che carico e utilizzo tramite Ajax e, a meno che non riavvii Tomcat, le modifiche non sembrano riflettere. Macchine diverse, browser diversi e non ricevo i file aggiornati.

Pensieri?

Risposte:


21

Potrebbe essere necessario eliminare la cartella della cache dell'applicazione in / work / Catalina / localhost dopo aver modificato il flag cachingAllowed.

La configurazione può essere introdotta in server.xml come

<Context className="org.apache.catalina.core.StandardContext"
                 cachingAllowed="false"
                 charsetMapperClass="org.apache.catalina.util.CharsetMapper"
                 cookies="true" 
                 reloadable="false" 
                 wrapperClass="org.apache.catalina.core.StandardWrapper">
        </Context>

2
+1 Ho completamente dimenticato di menzionarlo nella mia risposta originale. Grazie!
KPWINC,

2
LOL ... dov'è l'amore?
KPWINC,

4
Dove cambio il chachingAllowedtag?
Kajacx,

1
Ricezione di un avviso da Tomcat 8 all'avvio: impostazione della proprietà cachingAllowedper falsenon trovare una proprietà corrispondente.
naXa,

4
Questa risposta è super
superata

14

Per Tomcat 8 / Tomcat 9 le proprietà devono essere aggiunte in conf / context.xml come segue

<Context>
  <Resources antiResourceLocking="false" cachingAllowed="false" />
  ...
</Context>

Potrebbe essere necessario eliminare la cartella della cache dell'applicazione in / work / Catalina / localhost dopo aver modificato il cachingAllowedflag. Svuota anche la cache di IntelliJ IDEA (se la usi per eseguire Tomcat):

Mac: / Users / {: user} / Library / Caches / IntelliJIdea {: versione} / tomcat /  
Linux: /home/{:user}/.IntelliJIdea{:version}/system/tomcat/
Windows: C: \ Users \ {: user} \. IntelliJIdea {: versione} \ system \ tomcat \

Consulta la Guida di riferimento alla configurazione di Apache Tomcat 9 per altri parametri.


2
antiResourceLocking su <Resources> -Tag è definitivamente sbagliato per tomcat 8
pscheit

Questo non è corretto neanche per Tomcat 7. "L'impostazione della proprietà 'antiResourceLocking' su 'false' non ha trovato una proprietà corrispondente." ... "L'impostazione della proprietà 'cachingAllowed' su 'false' non ha trovato una proprietà corrispondente."
Amalgovinus,

@Amalgovinus per Tomcat 7 vedi la risposta di Zalumon .
naXa,

@Amalgovinus hai risolto il tuo problema? Ho lo stesso problema in Tomcat7, che cosa hai fatto?
Aaron,

Non ho mai avuto la proprietà di funzionare .. ma sono abbastanza sicuro che la mia cache fosse un problema di distribuzione non correlato :( errore utente
Amalgovinus

13

Ho avuto questo problema in Tomcat 7 e il motivo era che avevo antiResourceLocking impostato su true (sembrava una buona idea ...).

Secondo i documenti ( http://tomcat.apache.org/tomcat-7.0-doc/config/context.html ):

Si noti che l'impostazione su true ha alcuni effetti collaterali, tra cui la disabilitazione del ricaricamento di JSP in un server in esecuzione: vedere Bugzilla 37668.

Nel mio caso, ha anche causato la memorizzazione nella cache di semplici file di testo statici.

Quindi, in sintesi, almeno per un rapido sviluppo ho dovuto usare:

antiResourceLocking="false"
cachingAllowed="false"

Dove lo aggiungo esattamente? Se inserisco conf / context.xml mi dà "non ho trovato una proprietà corrispondente" per ciascuno di essi ...
Aaron,

1
Come attributi dell'elemento di contesto.
Reto Höhener,

4

Hai controllato questa documentazione: Riferimento alla configurazione di Apache Tomcat ?

cacheMaxSize- Dimensione massima della cache delle risorse statiche in kilobyte. Se non specificato, il valore predefinito è 10240 (10 megabyte).

cacheTTL- Quantità di tempo in millisecondi tra la riconvalida delle voci della cache. Se non specificato, il valore predefinito è 5000 (5 secondi).

cachingAllowed- Se il valore di questo flag è true, verrà utilizzata la cache per le risorse statiche. Se non specificato, il valore predefinito del flag è true.

Questi parametri sono gli stessi per Tomcat 5.5 e Tomcat 6.0.


Ho impostato cachingAllowed su false e cacheTTL su 1000 nel mio appcontext.xml e non riesco ancora a ottenere il file da non memorizzare nella cache. Peggio ancora, la memorizzazione nella cache su Tomcat si riavvia.
Stefan Kendall,

Quindi deve provenire dalla cache del browser
lisak
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.