在Tomcat 6中启用缓存?

时间:2013-10-23 11:00:07

标签: java tomcat caching servlets

我需要提高页面加载速度。在谷歌页面速度我有这个问题:

以下可缓存资源的新鲜生命周期较短。为以下资源指定将来至少一周的到期日期。

所以我应该在标题中添加过期日期,以强制浏览器在页面中缓存静态内容。对此有什么解决方案吗?

我使用tomcat 6.0.26。

2 个答案:

答案 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来执行相同的任务。