在 JSP 中添加 Expires 或 Cache-Control 标头
-
27-09-2019 - |
题
如何添加一个 Expires
或一个 Cache-Control
JSP 中的标头?我想在包含页面中为我的静态组件(例如图像、CSS 和 JavaScript 文件)添加一个远期到期日期。
解决方案
要禁用 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.
也可以看看:
其他提示
<%
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
%>
Servlet容器如Tomcat配备一组预定义的过滤器。例如,见过期过滤器。这可能是更容易使用现有的,而不是建立自己的类似的过滤器。
不隶属于 StackOverflow