Как отключить кэширование tomcat? У меня странные проблемы со статическими файлами


26

Как я могу предотвратить кеширование tomcat? У меня есть CSS и основные HTML-файлы, которые я загружаю и использую через ajax, и, если я не перезапущу tomcat, изменения, похоже, не отразятся. Разные машины, разные браузеры, и я не получаю обновленные файлы.

Мысли?

Ответы:


21

Возможно, вам придется удалить папку кэша приложения в / work / Catalina / localhost после изменения флага cachingAllowed.

Конфигурация может быть введена в server.xml как

<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 Я совершенно забыл упомянуть об этом в своем первоначальном ответе. Благодарность!
KPWINC

2
LOL ... где любовь?
KPWINC

4
Где я могу изменить chachingAllowedтег?
kajacx

1
Получил предупреждение от Tomcat 8 при запуске: Установка свойства cachingAllowedв falseне нашли свойство соответствия.
NaXa

4
Этот ответ сейчас очень устарел, для всех, кто его читает, и больше не является действительно правильным (для Tomcat 5+)
Amalgovinus,

14

Для Tomcat 8 / Tomcat 9 свойства должны быть добавлены в conf / context.xml следующим образом

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

Возможно, вам придется удалить папку кэша приложения в / work / Catalina / localhost после изменения cachingAllowedфлага. Также очистите кэш IntelliJ IDEA (если вы используете его для запуска Tomcat):

Mac: / Users / {: user} / Библиотека / Кэши / IntelliJIdea {: version} / tomcat /  
Linux: /home/ndom:usercasts/.IntelliJIdeandom:version работой/system/tomcat/
Windows: C: \ Users \ {: user} \. IntelliJIdea {: версия} \ system \ tomcat \

Посмотрите Apache Tomcat 9 Справочник по конфигурации для других параметров.


2
antiResourceLocking на <Resources> -Tag определенно не подходит для tomcat 8
pscheit

Это не правильно для Tomcat 7, либо. Msgstr "Установка свойства 'antiResourceLocking' в 'false' не нашла подходящего свойства." ... "При установке свойства 'cachingAllowed' в 'false' не найдено подходящего свойства."
Амальговинус

@Amalgovinus для Tomcat 7 см . Ответ Залумона .
NAXA

@Amalgovinus вы решили свою проблему? У меня такая же проблема в tomcat7, что ты делал?
Аарон

Мне никогда не
удавалось

13

У меня была эта проблема в Tomcat 7, и причина была в том, что для antiResourceLocking было установлено значение true (звучало как хорошая идея ...).

Согласно документам ( http://tomcat.apache.org/tomcat-7.0-doc/config/context.html ):

Обратите внимание, что установка этого значения в true имеет некоторые побочные эффекты, включая отключение перезагрузки JSP на работающем сервере: см. Bugzilla 37668.

В моем случае это даже вызвало кеширование простых статических текстовых файлов.

Итак, в итоге, по крайней мере, для быстрого развития мне пришлось использовать:

antiResourceLocking="false"
cachingAllowed="false"

Где я могу добавить это точно? Если я помещу в conf / context.xml, это даст мне «не найдено подходящее свойство» для каждого из них ...
Аарон

1
В качестве атрибутов элемента контекста.
Reto

4

Вы проверили эту документацию: Справочник по настройке Apache Tomcat ?

cacheMaxSize- Максимальный размер статического кеша ресурса в килобайтах. Если не указан, по умолчанию используется значение 10240 (10 мегабайт).

cacheTTL- Количество времени в миллисекундах между повторными проверками записей в кэше. Если не указан, значение по умолчанию составляет 5000 (5 секунд).

cachingAllowed- Если значение этого флага равно true, будет использоваться кэш для статических ресурсов. Если не указан, значение флага по умолчанию - true.

Эти параметры одинаковы для Tomcat 5.5 и Tomcat 6.0.


Я установил для cachingAllowed значение false и для cacheTTL значение 1000 в моем appcontext.xml, и я ВСЕ ЕЩЕ не могу получить файл, который нельзя кэшировать. Хуже всего то, что он перезагружается через перезапуски tomcat.
Стефан Кендалл

Тогда это должно быть из кэша браузера
lisak
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.