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.