Frage Wie deaktiviere ich Tomcat-Caching? Ich habe seltsame statische Dateiprobleme


Wie verhindere ich, dass der Tomcat zwischengespeichert wird? Ich habe CSS und grundlegende HTML-Dateien, die ich über Ajax laden und verwenden, und wenn ich Tomcat nicht neu starte, scheinen die Änderungen nicht zu reflektieren. Verschiedene Maschinen, verschiedene Browser und ich erhalte die aktualisierten Dateien nicht.

Gedanken?


23
2017-07-13 23:49


Ursprung




Antworten:


Möglicherweise müssen Sie den Ordner für den Anwendungscache in / work / Catalina / localhost löschen, nachdem Sie das Flag cachingAllowed geändert haben.

Konfiguration kann in server.xml als eingeführt werden

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

19
2017-07-14 00:57



+1 Ich habe völlig vergessen, das in meiner ursprünglichen Antwort zu erwähnen. Vielen Dank! - KPWINC
Genial. Funktioniert. - Stefan Kendall
LOL ... wo ist die Liebe? - KPWINC
Wo ändere ich das? chachingAllowed Etikett? - kajacx
Diese Antwort ist nun wirklich veraltet, für jeden, der liest und nicht mehr wirklich korrekt ist (für Tomcat 5+) - Amalgovinus


Ich hatte dieses Problem in Tomcat 7 und der Grund war, dass ich antiResourceLocking auf True gesetzt hatte (es klang wie eine gute Idee ...).

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

Bitte beachten Sie, dass das Einstellen von True einige Nebenwirkungen hat, einschließlich   das Deaktivieren des JSP-Neuladens auf einem laufenden Server: siehe Bugzilla   37668.

In meinem Fall verursachte es sogar, dass einfache statische Textdateien zwischengespeichert wurden.

Zusammenfassend, zumindest für die schnelle Entwicklung musste ich Folgendes verwenden:

antiResourceLocking="false"
cachingAllowed="false"

13
2017-11-24 10:41



Wo füge ich das genau hinzu? Wenn ich conf / context.xml einfüge gibt es mir "fand keine passende Eigenschaft" für jeden von ihnen ... - Aaron
Als Attribute des Kontextelements. - Reto Höhener


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

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

Möglicherweise müssen Sie den Ordner für den Anwendungscache in / work / Catalina / localhost löschen, nachdem Sie ihn geändert haben cachingAllowed Flagge. Löschen Sie auch den Cache von IntelliJ IDEA (wenn Sie ihn zum Ausführen von Tomcat verwenden):

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

Sehen Apache Tomcat 9 Konfigurationsreferenz für andere Parameter.


9
2018-03-29 14:22



antiResourceLocking auf <Resources> -Tag ist definitiv falsch für Tomcat 8 - P.Scheit
Dies ist auch für Tomcat 7 nicht korrekt. "Die Einstellung 'antiResourceLocking' auf 'false' hat keine passende Eigenschaft gefunden." ... "Das Festlegen der Eigenschaft 'cachingAllowed' auf 'false' hat keine übereinstimmende Eigenschaft gefunden." - Amalgovinus
@Amalgovinus für Tomcat 7 sehen Zalumons Antwort. - naXa
@Amalgovinus hast du dein Problem gelöst? Ich habe dasselbe Problem in tomcat7, was hast du gemacht? - Aaron
Ich habe nie die Eigenschaft zu arbeiten .. aber ich bin mir ziemlich sicher, dass mein Cache ein unabhängiges Problem bei der Bereitstellung war :( Benutzerfehler - Amalgovinus


Haben Sie diese Dokumentation überprüft: Referenz zur Apache Tomcat-Konfiguration ?

cacheMaxSize - Maximale Größe des   Statischer Ressourcencache in Kilobyte. Ob   nicht angegeben, der Standardwert ist   10240 (10 Megabyte).

cacheTTL -   Zeit in Millisekunden zwischen   Neubewertung der Cache-Einträge. Wenn nicht   angegeben, der Standardwert ist 5000   (5 Sekunden).

cachingAllowed -- Ob   der Wert dieser Flagge ist wahr, der   Cache für statische Ressourcen werden   gebraucht. Wenn nicht angegeben, der Standardwert   Der Wert der Flagge ist wahr.

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


4
2017-07-14 00:49



Ich setze cachingAllowed auf false und cacheTTL auf 1000 in meiner appcontext.xml, und ich kann immer noch nicht Datei nicht zu cachen. Schlimmer noch, es ist Cache über Tomcat Neustarts. - Stefan Kendall
Dann muss es aus dem Browser-Cache sein - lisak