Java 在Tomcat6中启用缓存?

Java 在Tomcat6中启用缓存?,java,tomcat,caching,servlets,Java,Tomcat,Caching,Servlets,我需要提高页面加载速度。在google page speed中,我有一个问题: 以下可缓存资源的新鲜度生命周期较短。为以下资源指定至少一周的到期时间 所以我应该在标题中添加过期日期,以强制浏览器缓存页面中的静态内容。有什么解决办法吗 我使用tomcat 6.0.26。如果您想在servlet中全局应用缓存头,可以使用过滤器 Tomcat7有一个内置的;对于Tomcat 6,您可以编写自己的,或者,执行相同的任务。如果您希望在servlet中全局应用缓存头,您可以使用过滤器 Tomcat7有一个内

我需要提高页面加载速度。在google page speed中,我有一个问题:

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

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


我使用tomcat 6.0.26。

如果您想在servlet中全局应用缓存头,可以使用过滤器


Tomcat7有一个内置的;对于Tomcat 6,您可以编写自己的,或者,执行相同的任务。

如果您希望在servlet中全局应用缓存头,您可以使用过滤器


Tomcat7有一个内置的;对于Tomcat6,您可以编写自己的,或者,执行相同的任务。

一个使用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);
}
}

一个使用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?spring?)?你试过什么?Tomcat7有ExpiresFilter来做这件事。我把那个过滤器移植到Tomcat6上了。看,有很多方法可以做到这一点,你能说更多关于你是如何做事情的吗(普通servlet?spring?)?你试过什么?Tomcat7有ExpiresFilter来做这件事。我把那个过滤器移植到Tomcat6上了。请看,我将ExpiresFilter从Tomcat7移植到Tomcat6。请看,我将ExpiresFilter从Tomcat7移植到Tomcat6。看见