在JSP中添加Expires或Cache-Control标头

时间:2010-06-16 16:27:00

标签: java jsp http cache-control

如何在JSP中添加ExpiresCache-Control标头?我想在包含页面中为我的静态组件添加远期到期日期,例如图像,CSS和JavaScript文件。

4 个答案:

答案 0 :(得分:71)

要禁用JSP页面的浏览器缓存,请创建Filter映射到url-pattern *.jsp的{​​{1}},并在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页面上进行复制,并使用 scriptlet 来混淆它们。

要为CSS和JS等静态组件启用浏览器缓存,请将它们全部放在/static/resources这样的公共文件夹中,并创建Filter映射到{{1} } url-pattern/static/*并在/resources/*方法中基本执行以下操作:

doFilter()

另见:

答案 1 :(得分:10)

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

答案 2 :(得分: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
%>

答案 3 :(得分:1)

像Tomcat这样的Servlet容器带有一组预定义的过滤器。请参阅示例Expires Filter。使用现有的可能比创建自己的类似过滤器更容易。