我需要提高页面加载速度。在谷歌页面速度我有这个问题:
以下可缓存资源的新鲜生命周期较短。为以下资源指定将来至少一周的到期日期。
所以我应该在标题中添加过期日期,以强制浏览器在页面中缓存静态内容。对此有什么解决方案吗?
我使用tomcat 6.0.26。
答案 0 :(得分:2)
使用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);
}
}
答案 1 :(得分:1)
如果您希望在servlet中全局应用缓存标头,则可以使用过滤器。
Tomcat 7内置了ExpiresFilter;对于Tomcat 6,您可以编写自己的,或use a third-party library来执行相同的任务。