Jak wyłączyć buforowanie tomcat? Mam dziwne problemy z plikiem statycznym

26

Jak zapobiec buforowaniu tomcat? Mam pliki css i podstawowe pliki HTML, które ładuję i używam za pośrednictwem ajax, i chyba że zrestartuję tomcat, zmiany nie wydają się odzwierciedlać. Różne maszyny, różne przeglądarki i nie otrzymuję zaktualizowanych plików.

Myśli?

Stefan Kendall
źródło

Odpowiedzi:

21

Może być konieczne usunięcie folderu pamięci podręcznej aplikacji w katalogu / work / Catalina / localhost po zmianie flagi cachingAllowed.

Konfigurację można wprowadzić w server.xml as

<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>
Adam Brand
źródło
2
+1 Zupełnie zapomniałem o tym wspomnieć w mojej oryginalnej odpowiedzi. Dzięki!
KPWINC
2
LOL ... gdzie jest miłość?
KPWINC
4
Gdzie mogę zmienić chachingAllowedtag?
kajacx
1
Dostałem ostrzeżenie od Tomcat 8 podczas uruchamiania: Ustawienie właściwości tak, cachingAllowedaby falsenie znalazła pasującej właściwości.
naXa
4
Ta odpowiedź jest teraz bardzo nieaktualna, dla każdego, kto czyta i nie jest już tak naprawdę poprawna (dla Tomcat 5+)
Amalgovinus
14

W przypadku Tomcat 8 / Tomcat 9 właściwości należy dodać w pliku conf /ext.xml w następujący sposób

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

Być może będziesz musiał usunąć folder pamięci podręcznej aplikacji w / work / Catalina / localhost po zmianie cachingAllowedflagi. Wyczyść również pamięć podręczną IntelliJ IDEA (jeśli używasz go do uruchamiania Tomcat):

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

Zobacz inne parametry w Apache Tomcat 9 Configuration Reference .

naXa
źródło
2
antiResourceLocking na <Resources> -Tag jest zdecydowanie zły dla tomcat 8
pscheit
To również nie jest poprawne dla tomcat 7. „Ustawienie właściwości„ antiResourceLocking ”na„ false ”nie znalazło pasującej właściwości.” ... „Ustawienie właściwości„ cachingAllowed ”na„ false ”nie znalazło pasującej właściwości.”
Amalgovinus
@Amalgovinus dla Tomcat 7 patrz odpowiedź Zalumona .
naXa
@Amalgovinus rozwiązałeś problem? Mam ten sam problem w tomcat7, co zrobiłeś?
Aaron
Nigdy nie miałem tej właściwości do działania .. ale jestem prawie pewien, że moja pamięć podręczna była niepowiązanym problemem związanym z wdrażaniem :( błąd użytkownika
Amalgovinus
13

Miałem ten problem w Tomcat 7 i powodem było to, że ustawiłem antiResourceLocking na true (brzmiało to jak dobry pomysł ...).

Według dokumentacji ( http://tomcat.apache.org/tomcat-7.0-doc/config/context.html ):

Pamiętaj, że ustawienie wartości true powoduje pewne skutki uboczne, w tym wyłączenie ponownego ładowania JSP na działającym serwerze: patrz Bugzilla 37668.

W moim przypadku spowodowało to nawet buforowanie zwykłych statycznych plików tekstowych.

Podsumowując, przynajmniej do szybkiego rozwoju musiałem użyć:

antiResourceLocking="false"
cachingAllowed="false"
Reto Höhener
źródło
Gdzie dokładnie to dodać? Jeśli wstawię plik conf / context.xml, daje mi to „nie znalazłem pasującej właściwości” dla każdego z nich ...
Aaron
1
Jako atrybuty elementu kontekstu.
Reto Höhener
4

Czy sprawdziłeś tę dokumentację: Dokumentacja konfiguracji Apache Tomcat ?

cacheMaxSize- Maksymalny rozmiar pamięci podręcznej zasobów statycznych w kilobajtach. Jeśli nie zostanie określony, wartością domyślną jest 10240 (10 megabajtów).

cacheTTL- Czas w milisekundach między ponownym sprawdzaniem poprawności wpisów w pamięci podręcznej. Jeśli nie zostanie określony, wartością domyślną jest 5000 (5 sekund).

cachingAllowed- Jeśli wartość tej flagi jest prawdziwa, zostanie użyta pamięć podręczna dla zasobów statycznych. Jeśli nie zostanie określony, domyślna wartość flagi to true.

Te parametry są takie same dla Tomcat 5.5 i Tomcat 6.0.

KPWINC
źródło
W moim pliku appcontext.xml ustawiłem cachingAllowed na false i cacheTTL na 1000, i nadal nie mogę uzyskać pliku, który nie będzie buforowany. Co gorsza, buforowanie w tomcat uruchamia się ponownie.
Stefan Kendall
Potem musi być z pamięci podręcznej przeglądarki
lisak,