Wie deaktiviere ich das Tomcat-Caching? Ich habe seltsame Probleme mit statischen Dateien

Wie deaktiviere ich das Tomcat-Caching? Ich habe seltsame Probleme mit statischen Dateien

Wie verhindere ich, dass Tomcat zwischenspeichert? Ich habe CSS- und grundlegende HTML-Dateien, die ich über Ajax lade und verwende, und wenn ich Tomcat nicht neu starte, werden die Änderungen anscheinend nicht angezeigt. Unterschiedliche Maschinen, unterschiedliche Browser, und ich erhalte die aktualisierten Dateien nicht.

Gedanken?

Antwort1

Möglicherweise müssen Sie den Anwendungscache-Ordner löschen, /work/Catalina/localhostnachdem Sie das cachingAllowedFlag geändert haben.

server.xmlDie Konfiguration kann wie folgt erfolgen :

    <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>

Antwort2

Für Tomcat 8 / Tomcat 9 sollten Eigenschaften in conf/context.xml wie folgt hinzugefügt werden

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

Möglicherweise müssen Sie den Anwendungscache-Ordner in /work/Catalina/localhost löschen, nachdem Sie das cachingAllowedFlag geändert haben. Leeren Sie auch den Cache von IntelliJ IDEA (wenn Sie es zum Ausführen von Tomcat verwenden):

Mac: /Benutzer/{:Benutzer}/Library/Caches/IntelliJIdea{:Version}/Tomcat/  
Linux: /home/{:user}/.IntelliJIdea{:version}/system/tomcat/
Windows: C:\Benutzer\{:Benutzer}\.IntelliJIdea{:version}\system\tomcat\

SehenApache Tomcat 9 Konfigurationsreferenzfür andere Parameter.

Antwort3

Ich hatte dieses Problem in Tomcat 7 und der Grund war, dass ich „antiResourceLocking“ auf „true“ gesetzt hatte (das klang nach einer guten Idee …).

Laut den Dokumenten (http://tomcat.apache.org/tomcat-7.0-doc/config/context.html):

Bitte beachten Sie, dass das Setzen dieses Werts auf „true“ einige Nebenwirkungen hat, einschließlich der Deaktivierung des JSP-Neuladens auf einem laufenden Server: siehe Bugzilla 37668.

In meinem Fall führte es sogar dazu, dass einfache statische Textdateien zwischengespeichert wurden.

Zusammenfassend musste ich also zumindest für eine schnelle Entwicklung Folgendes verwenden:

antiResourceLocking="false"
cachingAllowed="false"

Antwort4

Haben Sie diese Dokumentation überprüft:Apache Tomcat-Konfigurationsreferenz?

cacheMaxSize-- Maximale Größe des statischen Ressourcencaches in Kilobyte. Wenn nicht angegeben, ist der Standardwert 10240 (10 Megabyte).

cacheTTL- Zeitspanne in Millisekunden zwischen der erneuten Validierung von Cacheeinträgen. Wenn nicht angegeben, beträgt der Standardwert 5000 (5 Sekunden).

cachingAllowed-- Wenn der Wert dieses Flags „true“ ist, wird der Cache für statische Ressourcen verwendet. Wenn nicht angegeben, ist der Standardwert des Flags „true“.

Diese Parameter sind für Tomcat 5.5 und Tomcat 6.0 gleich.

verwandte Informationen