浏览器缓存顺序

本文详细介绍了浏览器缓存的工作原理,包括首次加载资源时的行为和再次加载时如何检查强缓存与协商缓存。重点讨论了max-age、Etag和last-modify在缓存验证中的作用,以及它们各自的优缺点。对于Etag,强调了其在负载均衡场景下可能存在的问题;而对于last-modify,指出了其时间精度不足可能导致的缓存误判问题。
摘要由CSDN通过智能技术生成

浏览器缓存顺序

  1. 如果是第一次加载资源,浏览器就直接获取服务器返回的数据;
  2. 再次加载资源时,首先判断是否存在强缓存,再先看看catch-control 设置的max-age有没有过期,如果没有过期直接304加载本地缓存;
  3. 如果max-age已过期就开始协商缓存,于是携带Etag或者last-modify向服务器发起if-None-Matchif-Modify-Since请求,其中Etag的优先级比last-modify高,若两者同时发送过去会优先判断Etag,服务器接收到客户端发过来的Etag时会将其与最新资源的Etag作比较,若两者一致就返回304状态让客户端直接从本地缓存中加载;若不一致就返回最新资源
  4. 若没有Etag,则服务端就拿last-modify作比较,判断最后修改的时间是否一致,若一致则304,若不一致则返回新资源

注意:
last-modify的缺点是其精确单位为秒,所以可能会出现缓存判断不准确的情况,例如用户在1s内发送多次请求,若这1s内服务端资源已经改变,由于精确度问题会导致客户端误判为资源未更新,只会从本地缓存中获取资源

Etag的缺点是因为不同服务器存储的Etag值是不一样的,若出现负载均衡情况时也可能导致一致的数据却重新加载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值