Як відключити кешування Tomcat? У мене є дивні проблеми зі статичними файлами


26

Як запобігти кеш-пампуванню? У мене є 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+)
Амальговінус

14

Для Tomcat 8 / Tomcat 9 властивості слід додати в conf / context.xml наступним чином

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

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

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

Інші параметри див. У довідці про конфігурацію Apache Tomcat 9 .


2
antiResourceLocking на <Resources> -Tag, безумовно, неправильний для tomcat 8
pscheit

Це не вірно і для tomcat 7. "Встановлення властивості" antiResourceLocking "на" false "не знайшло відповідного властивості." ... "Встановлення властивості" cachingAllowed "на" false "не знайшло відповідного властивості."
Амальговін

@Amalgovinus для Tomcat 7 див . Відповідь Залумона .
naXa

@Amalgovinus Ви вирішили свою проблему? У мене така ж проблема в tomcat7, що ти робив?
Аарон

У мене ніколи не було власності працювати .., але я впевнений, що мій кеш був непов’язаний із проблемою розгортання :( помилка користувача
Amalgovinus

13

У мене була проблема в Tomcat 7, і причина полягала в тому, що у мене було встановлено значення trueResourceLocking на істинне (це звучало як гарна ідея ...).

Відповідно до документів ( http://tomcat.apache.org/tomcat-7.0-doc/config/context.html ):

Зауважте, що встановлення цього значення має значення true, зокрема вимкнення перезавантаження JSP на запущеному сервері: див. Bugzilla 37668.

У моєму випадку це навіть спричинило кешування простих статичних текстових файлів.

Отже, підсумовуючи, принаймні для швидкого розвитку мені довелося використовувати:

antiResourceLocking="false"
cachingAllowed="false"

Куди саме це додати? Якщо я вставлю conf / context.xml, це дає мені "не знайшов відповідну властивість" для кожного з них ...
Аарон,

1
Як атрибути контекстного елемента.
Reto Höhener

4

Ви перевірили цю документацію: Довідник щодо конфігурації Apache Tomcat ?

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

cacheTTL- кількість часу в мілісекундах між повторним підтвердженням записів кешу. Якщо не вказано, значення за замовчуванням - 5000 (5 секунд).

cachingAllowed- Якщо значення цього прапора є істинним, буде використаний кеш для статичних ресурсів. Якщо це не вказано, значення прапорця за замовчуванням є істинним.

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


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

Тоді це має бути з кешу браузера
1111
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.