Как попросить браузер не хранить кеш Java EE / Tomcat - PullRequest
0 голосов
/ 17 августа 2011

Я хочу, чтобы мой браузер не сохранял кеш, когда я обновляю содержимое моего сервера, у меня всегда есть первая версия документа.

Но когда стираю кеш в моем браузере, все в порядке.Можно ли как-то сказать браузеру не хранить кеш при запуске моего webApp?Я использую Java EE (JSP) и сервер Apache Tomcat.

1 Ответ

3 голосов
/ 17 августа 2011

Вы можете использовать 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>
...