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?

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>

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 .


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"

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.


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,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.