过滤器:禁止浏览器缓存所有动态页面

禁止浏览器缓存所有动态页面意味着阻止浏览器在访问网站上的动态生成内容时将这些内容存储在本地缓存中。动态页面通常是那些在每次加载时都会根据用户请求或其他因素而生成不同内容的页面,而不是静态页面,其内容在每次访问时都保持不变。

禁止浏览器缓存动态页面可以确保用户在访问网站时总是看到最新的内容,而不会因为浏览器仍然使用之前缓存的内容而导致信息不准确或过时。这对于需要及时更新的网站非常重要,例如新闻网站、社交媒体、电子商务网站等。

通常,要禁止浏览器缓存动态页面,网站开发人员可以在HTTP响应头中设置相关的Cache-Control或Pragma标头,指示浏览器不要缓存页面内容。这可以通过服务器端的配置或网页的HTML代码来实现。具体的方法可能因网站的技术架构和需求而异。

我们可以使用过滤器来实现:

public class FilterDemo1 implements Filter {
        public void destroy() {
        }
    
        public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
    
            //让Web资源不缓存,很简单,设置http中response的请求头即可了!

            //我们使用的是http协议,ServletResponse并没有能够设置请求头的方法,所以要强转成HttpServletRequest

            //一般我们写Filter都会把他俩强转成Http类型的
            HttpServletRequest request = (HttpServletRequest) req;
            HttpServletResponse response = (HttpServletResponse) resp;

            response.setDateHeader("Expires", -1);
            response.setHeader("Cache-Control", "no-cache");
            response.setHeader("Pragma", "no-cache");

            //放行目标资源的response已经设置成不缓存的了
            chain.doFilter(request, response);
        }
    
        public void init(FilterConfig config) throws ServletException {
            
        }
}
  • 没有过滤之前,响应头是这样的:

    

  • 过滤之后,响应头是这样的:

    

posted @ 2023-09-11 22:18  小白冲冲  阅读(43)  评论(0编辑  收藏  举报