Назад | Перейти на главную страницу

Почему изменения в файле происходят так медленно? (Apache Tomcat)

У меня есть сервер Apache Tomcat 7. Если я изменю файл на сервере (например, таблицу стилей, файл javascript или любой простой / текстовый файл), например, используя vim. Затем, если я перейду к файлу в интернет-браузере и несколько раз нажму F5, пока не увижу фактическое изменение, мне придется подождать (нажимая F5 каждые 500 мс) несколько секунд (~ 3 секунды), прежде чем я увижу то, что я просто изменилось.

Короче говоря: если файл был изменен на сервере, я вижу его примерно через 3 секунды на стороне клиента. Итак, где-то должен быть кеш, вероятно, на стороне сервера, поскольку я использую F5, который должен отбрасывать кеш на стороне клиента. Итак, как я могу настроить каталог на моем сервере Apache Tomcat, чтобы он не кэшировал файлы?

Я хочу сделать это, потому что я создал простой веб-сайт на основе Ajax / Servlet для чата. Но после ввода сообщения оно появится через ~ 3 секунды. Я знаю, что это может быть намного быстрее, потому что я делал это раньше на бесплатном сервере веб-хостинга PHP.

Tomcat кэширует статический контент с TTL по умолчанию 5 секунд. Если вы хотите изменить это, см. http://tomcat.apache.org/tomcat-7.0-doc/config/context.html#Attributes. В частности, вам нужны cacheTTL, cachingAllowed и, возможно, cacheMaxSize и cacheObjectMaxSize.

Не уверен, как Tomcat добавляет ко всему без кеша. Самый простой способ самостоятельно контролировать заголовки - это написать и настроить общий фильтр заголовков в web.xml следующим образом:

=== web.xml ===

NoCache x.y.z.filters.ResponseHeaderFilter

Cache-Control no-cache, необходимо перепроверить

CacheForWeek uk.co.slc.crm.common.filters.ResponseHeaderFilter

Cache-Control max-age = 604800, общедоступный

NoCache /*.do

CacheForWeek / images / *

CacheForWeek /*.js

CacheForWeek /*.css

=== web.xml ===