Добавьте заголовок Expires или Cache-Control в JSP - PullRequest
29 голосов
/ 16 июня 2010

Как добавить заголовок Expires или Cache-Control в JSP? Я хочу добавить дату окончания срока годности на странице включения для моих статических компонентов, таких как изображения, файлы CSS и JavaScript.

Ответы [ 4 ]

71 голосов
/ 16 июня 2010

Чтобы отключить кэш браузера для страниц 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.

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

10 голосов
/ 16 июня 2010
<%
    response.setHeader("Cache-Control", "no-cache");
    response.setDateHeader("Expires", 0);
%>
2 голосов
/ 30 апреля 2014
<%
    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
%>
1 голос
/ 20 января 2013

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

...