浏览器缓存

作者: zhudying | 来源:发表于2023-10-06 10:28 被阅读0次
客户端缓存过程
  1. 首次请求时,服务器返回资源,并在响应头中注明缓存参数,客户端缓存资源
  2. 再次请求时,会先访问浏览器缓存,若命中强缓存则直接提取资源,状态码返回 200
  3. 若未命中强缓存,则将请求发送给服务器,判断本地协商缓存是否失效,若有效则返回状态码 304
  4. 若未命中协商缓存,则服务器返回完整资源,并更新缓存
强缓存

缓存由响应头中的 Expires 或 Cache-Control 两个字段控制,表示缓存有效期

  1. Expires(http1.0提出)
    表示缓存到期时间,Expires时间与本地时间对比。

缺点是若客户端和服务端时间不一致会导致缓存更新不及时,如果修改本地时间,会产生问题。

  1. Cache-Control(http1.1提出)
    解决了 Expires 产生问题,是替代品。
    no-cache — 文件会缓存,不会强缓存,但是会进行协商缓存
    no-store — 不使用缓存,每次都重新请求资源
    max-age — 缓存有效时长,相对时间,单位是 s
    public / private — public: 代理服务器和浏览器都会缓存,private: 浏览器缓存,默认为 private
    must-revalidate — 每次访问需缓存校验
协商缓存

未命中强缓存时,需访问服务器确认当前浏览器的缓存是否过期,若未过期则直接读取,返回 304

未命中情况:no-cache,max-age=0,max-age时间过期

  1. Last-Modify/If-Modify-Since(http1.0提出)
    last-modified 表示最后修改时间
    服务器与该资源的最后修改时间来确定是否使用缓存

缺点是单位是秒,如果资源以毫秒变化,无法更新;以时间戳进行比较,然后有编辑但是没有修改的内容,也会进行更新。

  1. Etag/If-None-Match(http1.1提出)
    last-modified 的补充方法
    Etag 的值是根据内容资源计算出来的的哈希字符串,当内容有变化时 Etag 就会变化。

缺点是当资源过大时,生成会消耗性能。

若资源未过期,则返回 304 表示资源未修改
若资源已过期,则返回 200 并附上最新资源以及新的 last-modified

相关文章

  • 浏览器缓存(http缓存)

    浏览器缓存有两种:强制缓存和协商缓存 浏览器缓存机制 浏览器发送请求,会先从浏览器缓存中查找【请求结果】和【缓存标...

  • 缓存、cookie、token、session、localSto

    一、缓存分类 服务器端缓存(CDN缓存) 客户端缓存(浏览器缓存); 二、浏览器缓存 强缓存:浏览器在加载资源时,...

  • 协商缓存和强缓存

    浏览器缓存主要有两类:缓存协商和彻底缓存,也有称之为协商缓存和强缓存 浏览器缓存机制浏览器缓存(Brower Ca...

  • DSBD

    1.浏览器缓存 浏览器每次发起请求,都会先在浏览器缓存中查找该请求的结果以及缓存标识 强制缓存优先于协商缓存进...

  • HTTP缓存机制

    web缓存分为:数据库缓存、服务器缓存(代理服务器、cdn缓存)、浏览器缓存浏览器缓存分为:http缓存、inde...

  • HTTP 缓存控制

    Web 缓存 数据库缓存、服务器端缓存(代理服务器缓存、CDN 缓存)、浏览器(HTTP)缓存 浏览器缓存(本地储...

  • Web浏览器的缓存机制

    原文转载【Web缓存机制系列】2 – Web浏览器的缓存机制 浏览器端的缓存规则 对于浏览器端的缓存来讲,这些规则...

  • 浏览器缓存?优点?清除方法?

    ☆前端优化:浏览器缓存技术介绍 - 简书 浏览器缓存(适用于前端解决缓存问题) - 简书 js清除浏览器缓存问题的...

  • 浏览器缓存

    浏览器缓存 浏览器处理网页的方式 走到协商缓存会返回 304 走到强缓存会返回 200 合理使用浏览器缓存 页面连...

  • 《白帽子讲web扫描》笔记

    2.9 DNS本地缓存 DNS本地缓存:一是浏览器缓存,二是系统缓存。在浏览器访问域名时优先访问浏览器缓存,一旦未...

网友评论

    本文标题:浏览器缓存

    本文链接:https://www.haomeiwen.com/subject/fsoebdtx.html