Glassfish 3.1.2、Mojarra 2.1.6、SSL 已激活
我有一个关于静态资源缓存的问题。我已经阅读了一些关于此的帖子,但我不确定我们应该使用哪些选项。这
https://developers.google.com/speed/docs/best-practices/caching
也是一篇关于资源缓存的好文章。在我们的应用服务器中 SSL 被激活。我们看到静态资源(图像、脚本、css)没有被缓存。
这是我的测试过滤器:
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
if (request instanceof HttpServletRequest && response instanceof HttpServletResponse) {
HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpServletResponse httpResponse = (HttpServletResponse) response;
String uri = httpRequest.getRequestURI();
if (GET_METHOD.equalsIgnoreCase(httpRequest.getMethod()) && uri.contains(ResourceHandler.RESOURCE_IDENTIFIER)) {
httpResponse.setDateHeader("Expires", System.currentTimeMillis() + 2419200000L); // 1 month in future.
httpResponse.setDateHeader("Last-Modified", System.currentTimeMillis() - 2419200000L); // 1 month in past.
httpResponse.setHeader("Cache-Control", "public"); // Secure caching
}
}
chain.doFilter(request, response);
}
- 过期:好的。它是一种不会更改的静态资源,因此我们将到期日期设置为未来一个月。
- 最后修改:不确定。我读过将其设置为过去也会影响缓存
- 缓存控制:好的。允许安全缓存。安全影响?
这个设置有影响吗?我还阅读了很多帖子,其中应通过过滤器禁用缓存。我看到的唯一问题是用户可能在新版本上遇到问题。新版本中可以更改样式和脚本,但浏览器会忽略新版本并使用缓存中的文件。