我需要提高頁面加載速度。在谷歌頁面速度我有這個問題:在Tomcat 6中啓用緩存?
下面的緩存資源有一個短的新鮮度生存期。爲以下資源指定將來至少一週的到期日期。
所以我應該添加過期日期到頭來強制瀏覽器緩存頁面中的靜態內容。有沒有解決方案?
我使用tomcat 6.0.26。
我需要提高頁面加載速度。在谷歌頁面速度我有這個問題:在Tomcat 6中啓用緩存?
下面的緩存資源有一個短的新鮮度生存期。爲以下資源指定將來至少一週的到期日期。
所以我應該添加過期日期到頭來強制瀏覽器緩存頁面中的靜態內容。有沒有解決方案?
我使用tomcat 6.0.26。
如果您希望將某些緩存標頭全局應用於您的servlet,則可以使用過濾器。
Tomcat 7內置了ExpiresFilter;對於Tomcat 6,您可以編寫自己的或use a third-party library以執行相同的任務。
我將ExpiresFilter從Tomcat 7移植到Tomcat 6.請參閱https://github.com/bnegrao/ExpiresFilter –
一個解決方案使用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?)?你有什麼嘗試? –
Tomcat 7有ExpiresFilter來做到這一點。我將該過濾器移植到Tomcat 6.請參閱https://github.com/bnegrao/ExpiresFilter –