Как отключить кэширование 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 Справочник по конфигурации для других параметров.

naXa
источник
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"
Reto Höhener
источник
Где я могу добавить это точно? Если я помещу в conf / context.xml, это даст мне «не найдено подходящее свойство» для каждого из них ...
Аарон
1
В качестве атрибутов элемента контекста.
Reto
4

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

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

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

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

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

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