2013-08-22 2 views
0

Я создаю проект в vaadin, который работает на Tomcat, но вопрос касается, в общем, java-веб-приложения. Приложение состоит из нескольких модулей, которые вместе составляют приложение. Я хочу отрегулировать его, так как способ выполнения приложения определяется URL-адресом. Поэтому я привязываю параметр к URL-адресу, который, по-видимому, имеет следующий вид:Избегайте кеша браузера в веб-приложении java

http:myproject/anything/foo?mode=sth.

извлечь параметр в методе onRequestStart():

String param = request.getParameter("mode"); 

Я построить приложение в соответствии с параметром. То есть параметр a1 показывает только модуль a1, параметр a2 только модуль a2, ... и параметр normal всего приложения. Однако у меня есть проблема с browser cache, особенно по параметру «normal». После первого запуска с этим параметром все последующие раз браузер не «реализует» новый запрос и не показывает приложение из кэша, что означает последний модуль. Странно по другим параметрам я еще не заметил эту проблему. Тем не менее, он по-прежнему не является надежным, и, чтобы сделать его, безусловно, надежным, я должен избегать кеширования браузера. Что может быть решением? Я обнаружил, что одним из решений является добавление timestamp на URL-адрес, который должен меняться каждый раз, чтобы он всегда читал новый URL-адрес и делал новый запрос. Как я могу прикрепить его, хотя в Java-приложении?

ответ

1

Установите соответствующие элементы управления кешем заголовки для вашего HttpServletResponse.

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

Если вам нужно сделать это для всех ваших страниц, лучше реализовать это как Filter.

Смежные вопросы