Avoiding browser cache

by Otávio Garcia and Lucas Cavalcanti

This interceptor will called always, and tells the browser to don’t cache your pages, adding some headers that expires the page.

public class NoCacheInterceptor {

    private final HttpServletResponse response;

     * @deprecated CDI eyes only
    protected NoCacheInterceptor(){

    public NoCacheInterceptor(HttpServletResponse response) {
        this.response = response;

    public void intercept() {

        // set the expires to past
        response.setHeader("Expires", "Wed, 31 Dec 1969 21:00:00 GMT");

        // no-cache headers for HTTP/1.1
        response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");

        // no-cache headers for HTTP/1.1 (IE)
        response.addHeader("Cache-Control", "post-check=0, pre-check=0");

        // no-cache headers for HTTP/1.0
        response.setHeader("Pragma", "no-cache");

If you want to define which pages won’t be cached, you can create an annotation:

@Target({ElementType.METHOD, ElementType.TYPE})
public @interface NoCache {


And adds the annotation @AcceptsWithAnnotation in the interceptor class.

public class NoCacheInterceptor {