Как полностью отключить кэширование Tomcat? - PullRequest
5 голосов
/ 28 января 2010

У меня проблемы с сайтом, над которым я сейчас работаю.

Мы пытаемся сделать виджет комментариев на Facebook. Виджет загружается каждый раз, когда мы делаем новый запрос, который отвечает со статусом 200 OK. Но когда он возвращается с 304 Not Modified, виджет не загружается.

Все это указывает на проблему с кэшированием. Я попытался изменить в context.xml

<Context cachingAllowed="false">

Это, похоже, не работает. Любые советы?

Ответы [ 2 ]

15 голосов
/ 29 января 2010

Это не похоже на работу. Любые советы?

Атрибут cachingAllowed на самом деле настраивает кэширование на стороне сервера, а не кэширование на стороне клиента, как вы ожидаете.

Кэширование на стороне клиента должно выполняться с соответствующими заголовками ответа. Чтобы полностью отключить кэширование на стороне клиента для определенных ресурсов, необходимо создать Filter, который прослушивает требуемый url-pattern и имеет по крайней мере следующие строки внутри метода doFilter():

response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
response.setDateHeader("Expires", 0); // Proxies.

response здесь, кстати, HttpServletResponse, который был приведен обратно из 2-го ServletResponse аргумента метода doFilter().

Не забудьте очистить кэш на стороне клиента (таким образом, внутри конфигурации веб-браузера) перед тестированием всего этого:)

0 голосов
/ 28 января 2010

Кажется, проблема в том, что клиентский браузер кеширует его, попробуйте добавить к вашему запросу случайное число как __rnd__= Math.random()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...