开发者

How ask a browser to not store cache Java EE/Tomcat

开发者 https://www.devze.com 2023-03-29 05:13 出处:网络
I want to my browser not to store cache, when I update the content of my server I always have the first version of a document.

I want to my browser not to store cache, when I update the content of my server I always have the first version of a document.

But when erase cache on my browser ev开发者_运维问答erything's ok. Is there anyway to tell the browser not to store cache when running my webApp ? I am using Java EE (JSPs) and Apache Tomcat Server.


You can use a ServletFilter to ensure that the HTTP response contains headers to instruct browsers not to cache:

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

and then configure the web.xml to use that filter for all requests:

<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>
0

精彩评论

暂无评论...
验证码 换一张
取 消