2010-06-16 4 views

ответ

68

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

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

Таким образом, вы не нужны чтобы скопировать эту информацию поверх всех страниц JSP и загромождать их с помощью скриптлетов.

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

httpResponse.setDateHeader("Expires", System.currentTimeMillis() + 604800000L); // 1 week in future. 

Смотрите также:

+6

+ ∞ если бы я мог для вашего сообщения в блоге. Это спасло меня. МНОГИЕ. ЧАСЫ. –

+0

@Bears: Добро пожаловать :) – BalusC

+2

спасибо, это мне очень помогло. Но разве нет ошибки на второй линии? Имхо это должно быть: httpResponse.setHeader («Cache-Control», «no-cache, no-store, must-revalidate»); – Christian

8
<% 
    response.setHeader("Cache-Control", "no-cache"); 
    response.setDateHeader("Expires", 0); 
%> 
+0

ОП говорит, что ему нужна страница, которая истекает в далеком будущем, но этот ответ дает ему противоположное. –

1

Servlet контейнеров, как Tomcat поставляются с набором предустановленных фильтров. См. Например, Expires Filter. Может быть проще использовать существующий, чем создать собственный подобный фильтр.

2
<% 
    response.setHeader("Cache-Control", "no-cache"); //HTTP 1.1 
    response.setHeader("Pragma", "no-cache"); //HTTP 1.0 
    response.setDateHeader("Expires", 0); //prevents caching at the proxy server 
%> 
+0

Должны использоваться как «Cache-Control», так и «Pragma» или только один, зависящий от контейнера сервлетов? –

+0

OP говорит, что ему нужна страница, которая истекает в далеком будущем, но этот ответ дает ему обратное. –

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

  • Нет связанных вопросов^_^