30

如何在 JSP 中添加一个Expires或标题?Cache-Control我想在包含页面中为我的静态组件(例如图像、CSS 和 JavaScript 文件)添加一个遥远的到期日期。

4

4 回答 4

73

要禁用 JSP 页面的浏览器缓存,请创建一个Filter映射在url-patternof上的,*.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 页面上并用scriptlet使它们混乱。

要为 CSS 和 JS 等静态组件启用浏览器缓存,请将它们全部放在一个公共文件夹中,例如/staticor/resources并创建一个Filter映射到url-patternor/static/*的文件夹/resources/*,并在方法中基本上执行以下操作doFilter()

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

也可以看看:

于 2010-06-16T16:29:36.520 回答
10
<%
    response.setHeader("Cache-Control", "no-cache");
    response.setDateHeader("Expires", 0);
%>
于 2010-06-16T16:29:14.713 回答
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
%>
于 2014-04-30T04:32:18.167 回答
1

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

于 2013-01-20T01:07:23.310 回答