美文网首页
浏览器缓存

浏览器缓存

作者: 欢西西西 | 来源:发表于2023-01-19 19:58 被阅读0次

缓存的好处:
① 使网页加载和呈现速度更快
② 减少不必要的数据传输,节省流量和带宽,减少服务器的负担

什么样的请求会被浏览器缓存?

一. 按缓存位置分类

缓存按位置可以分为:内存缓存(memory cache)、硬盘缓存(disk cache)、service worker

1. disk cache和memory cache

image.png image.png image.png
- disk cache memory cache
位置 硬盘 内存
控制权 服务端 浏览器
速度 更快
退出进程 缓存不会被清除,所以,当下次再进入该进程时,该进程仍可以从diskCache中获得数据 会被清除
截图 image.png image.png

二. 按缓存策略分类

按缓存策略分类,浏览器的资源缓存可以分为:强缓存、协商缓存

  • 强缓存不会向服务器发送请求,未过期就直接取缓存
  • 协商缓存会向服务器发送请求,请求时会带上缓存中的etag或者last-modified值,以让服务器来判断资源是否被修改,未被修改则返回304,由浏览器从缓存中读取资源

1. 流程

未命名文件 (1).png

2. 浏览器如何判断是强缓存还是协商缓存?

缓存.jpg
强缓存 协商缓存
- image.png - image.png

强缓存之cache-control

  • no-cache:表示不使用强缓存,请求资源都要经过服务器确认。do-not-serve-from-cache-without-revalidation
  • no-store:不使用缓存

以下情况,浏览器会按协商缓存机制进行缓存

  • cache-control: max-age=0
  • cache-control: no-cache
  • cache-control: must-revalidate

3. 浏览器如何判断强缓存是否过期?

  • max-age: 单位是秒,优先使用
  • expires:绝对时间,表示缓存过期时间。当max-age不存在时使用这个判断

4. 服务端如何判断协商缓存的资源是否过期?

last-modified 和 etag是服务器设置到响应头中的,在请求时浏览器将缓存中的这2个字段放在if-modified-since和if-none-match中传给服务器,作为服务器判断资源是否修改的依据

  • last-modified / if-modified-since:是一个时间点,精确度是秒级。服务器用传过来的值和当前资源的last-modified值作比较
  • etag/ if-none-match:etag是资源的哈希值。服务器计算这个资源的哈希值,再和传过来哈希值作比较
  • etag的优先级高于last-modified,因为etag更精确。比如:
    ① 资源修改时间是在ms级的话last-modified就不准确
    ② 资源可能last-modified变了,但内容未修改
    ③ 可能服务器也无法得到文件精确的last-modified
  • 由于etag要服务器去计算资源的哈希值,所以使用etag的开销相比使用last-modified的方式更高
  • 截图


    image.png

6. 常见问题

① 刷新网页后的缓存

  • F5:跳过强缓存,仍可以使用协商缓存
  • Ctrl+F5:直接从服务器加载资源,跳过强缓存和协商缓存

② 禁止浏览器不缓存静态资源

  • 服务端设置请求的响应头:cache-control: no-cache, no-store, must-revalidate
  • html中使用meta标签:<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />

相关文章

  • 浏览器缓存(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/ysyqhdtx.html