2011-08-17 92 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>