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

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

要禁用JSP页面的浏览器缓存,请创建一个映射在*.jspurl-pattern上的Filter ,并在doFilter()方法中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这样的公共文件夹中,并创建一个映射到/static/*/resources/*url-patternFilter ,并基本完成doFilter()方法中的以下内容:

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

也可以看看:

  • 确保所有浏览器都不会缓存网页。
  • Web应用程序性能提示和技巧。
 <% response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); %> 
 <% 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 %> 

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