我需要提高页面加载速度。在谷歌页面速度我有这个问题:
以下可缓存资源具有较短的新鲜生命周期。为以下资源指定至少一周后的到期时间。
所以我应该在标题中添加过期日期以强制浏览器缓存页面中的静态内容。有什么解决办法吗?
我使用tomcat 6.0.26。
使用 spring 框架的一种解决方案
您需要编写一个与此类似的过滤器:
@WebFilter(dispatcherTypes = { YourDispatcherTypes }, urlPatterns = { "*.jsp","/yourresourcename/*", "oranyother"})
public class CacheHandlingFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(final HttpServletRequest request, final HttpServletResponse response, final FilterChain filterChain)
throws ServletException, IOException {
HttpServletRequest httpReq = (HttpServletRequest) request;
HttpServletResponse httpResp = (HttpServletResponse) response;
if(httpReq.getRequestURI().contains("/yourresourcename/")) {
httpResp.setDateHeader("Expires", ProvideTimeForCacheHere);
httpResp.setHeader("Cache-Control", "public, max-age=" + ProvideTimeForCacheHere);
}
filterChain.doFilter(request, response);
}
}
如果你想在你的 servlet 中全局应用缓存头,你可以使用过滤器。
Tomcat 7 内置了一个ExpiresFilter;对于 Tomcat 6,您可以自己编写或使用第三方库来执行相同的任务。