这是如何在所有浏览器中控制网页缓存的引用?您在问题中链接但显然被忽略了:
请注意,当通过 HTTP 提供页面并且 HTTP 响应标头和 HTML 元标记中都存在标头时,响应标头中指定的标头将优先于 HTML 元标记。HTML 元标记仅在从本地磁盘文件系统查看页面时使用。另见W3 HTML 规范第 5.2.2 章。当您不以编程方式指定它们时请注意这一点,因为网络服务器可以包含一些默认值。要验证一个和另一个,您可以使用 Firebug Net 面板查看/调试它们。
这显然是事实。您需要在真实的 HTTP 响应中设置这些标头,而不是在其 HTML 输出中。对于 JSF 1.x Web 应用程序,最好的方法是创建一个servlet 过滤器来执行任务。这是一个启动示例:
public class NoCacheFilter implements Filter {
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
response.setDateHeader("Expires", 0); // Proxies.
chain.doFilter(req, res);
}
// ...
}
将其映射web.xml
到感兴趣的 URL 模式,例如,*.jsf
或FacesServlet
.