首页 > 其他分享 >过滤器:禁止浏览器缓存所有动态页面

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

时间:2023-09-11 22:35:22浏览次数:30  
标签:缓存 浏览器 response 过滤器 动态 public 页面

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

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

通常,要禁止浏览器缓存动态页面,网站开发人员可以在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 {
            
        }
}
  • 没有过滤之前,响应头是这样的:

    

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

    

标签:缓存,浏览器,response,过滤器,动态,public,页面
From: https://www.cnblogs.com/ShengLiu/p/17694710.html

相关文章

  • 缓存和数据库一致性问题
    先说结论:1、想要提高应用的性能,可以引入「缓存」来解决2、引入缓存后,需要考虑缓存和数据库一致性问题,可选的方案有:「更新数据库+更新缓存」、「更新数据库+删除缓存」3、更新数据库+更新缓存方案,在「并发」场景下无法保证缓存和数据一致性,且存在「缓存资源浪费」和「机......
  • Redis 缓存击穿,缓存穿透,缓存雪崩原因+解决方案
    缓存击穿,缓存穿透,缓存雪崩的原因缓存击穿:key对应的数据存在,但在redis中过期,此时若有大量并发请求过来,这些请求发现缓存过期一般都会从后端DB加载数据并回设到缓存,这个时候大并发的请求可能会瞬间把后端DB压垮。缓存穿透:key对应的数据在数据源并不存在,每次针对此key的请求从缓存......
  • Chrome浏览器不提示保存密码的解决办法
    首先关闭浏览器,然后进入Chrome浏览器的数据存储文件夹【C:Users你的用户名AppDataLocalGoogleChromeUserDataDefault】删除【LoginData、LoginData-journal 】两个文件即可。原文链接:https://office.tqzw.net.cn/computer/computer/15621.html......
  • Edge浏览器没有让我失望! 今天终于可以在win10中模拟IE内核进行前端测试了,以后就用它
    ......
  • chrome浏览器清除指定站点的cookies
    图1:图2:图3:......
  • redis-实战篇-商户查询缓存
    基本思路添加缓存的原则:动态数据不要加缓存缓存cache:数据交换的缓冲区。一般读写性能较高。比如浏览器缓存,浏览器会将一些经常使用的数据缓存到本机,这样在多次加载时就不需要访问服务器,而浏览器未命中的缓存则会去tomcat获取。缓存的作用:降低后端负载、提高读写效率、降低响应......
  • Redis的缓存穿透、缓存雪崩、缓存击穿问题及解决方案
    Redis的缓存穿透、缓存雪崩、缓存击穿问题及解决方案缓存穿透问题及解决思路缓存穿透:缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,这些请求都会打到数据库。因为我们查数据通常是现在redis缓存查数据,如果redis没有这个数据,就会去数据库查。如......
  • 七、Nginx缓存机制
    对于性能优化而言,缓存是一种能够大幅度提升性能的方案,因此几乎可以在各处都能看见缓存,如客户端缓存、代理缓存、服务器缓存等等,Nginx的缓存则属于代理缓存的一种。对于整个系统而言,加入缓存带来的优势额外明显:减少了再次向后端或文件服务器请求资源的带宽消耗。降低了下游服务器的......
  • 监听canal实现缓存同步
           ......
  • nginx本地缓存
           ......