2011-08-17 91 views
0

我希望我的瀏覽器不要存儲緩存,當我更新服務器的內容時​​,我總是擁有文檔的第一個版本。如何讓瀏覽器不存儲緩存Java EE/Tomcat

但是,當我的瀏覽器擦除緩存一切都OK。 有沒有辦法告訴瀏覽器在運行我的webApp時不要存儲緩存? 我正在使用Java EE(JSP)和Apache Tomcat Server。

回答

3

您可以使用ServletFilter中,以確保HTTP響應包含頭指示瀏覽器不緩存:

public class NoCachingFilter implements Filter { 

    public void init(FilterConfig filterConfig) { 
    } 

    public void destroy() { 
    } 

    public void doFilter(
        ServletRequest request, 
        ServletResponse response, 
        FilterChain chain) 
      throws IOException, ServletException { 
     HttpServletResponse httpResponse = (HttpServletResponse) response; 

     httpResponse.setHeader("Cache-Control", "no-cache"); 
     httpResponse.setDateHeader("Expires", 0); 
     httpResponse.setHeader("Pragma", "no-cache"); 
     httpResponse.setDateHeader("Max-Age", 0); 

     chain.doFilter(request, response); 
    } 
} 

,然後配置web.xml中使用過濾器的所有請求:

<filter> 
    <filter-name>NoCachingFilter</filter-name> 
    <filter-class>my.pkg.NoCachingFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>NoCachingFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping>