如何在JSP中添加Expires
或Cache-Control
标头?我想在包含页面中为我的静态组件添加远期到期日期,例如图像,CSS和JavaScript文件。
答案 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。使用现有的可能比创建自己的类似过滤器更容易。