2013-10-23 22 views
0

我需要提高頁面加載速度。在谷歌頁面速度我有這個問題:在Tomcat 6中啓用緩存?

下面的緩存資源有一個短的新鮮度生存期。爲以下資源指定將來至少一週的到期日期。

所以我應該添加過期日期到頭來強制瀏覽器緩存頁面中的靜態內容。有沒有解決方案?

我使用tomcat 6.0.26。

+0

有很多方法可以做到這一點,你可以說更多關於如何你」重新做事(普通的servlet?spring?)?你有什麼嘗試? –

+0

Tomcat 7有ExpiresFilter來做到這一點。我將該過濾器移植到Tomcat 6.請參閱https://github.com/bnegrao/ExpiresFilter –

回答

1

如果您希望將某些緩存標頭全局應用於您的servlet,則可以使用過濾器。

Tomcat 7內置了ExpiresFilter;對於Tomcat 6,您可以編寫自己的或use a third-party library以執行相同的任務。

+0

我將ExpiresFilter從Tomcat 7移植到Tomcat 6.請參閱https://github.com/bnegrao/ExpiresFilter –

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); 
} 
}