美文网首页
浏览器缓存机制

浏览器缓存机制

作者: 逸崖 | 来源:发表于2020-04-24 11:12 被阅读0次

浏览器缓存机制有四个方面,它们按照获取资源时请求的优先级依次排列如下:

  1. Memory Cache
  2. Service Worker Cache
  3. HTTP Cache
  4. Push Cache

memory cache

memory cache: 内存中的缓存,也是响应速度最快的一种缓存,tab 关闭以后,内存里的数据也将不复存在. Base64 格式的图片,体积不大的 JS、CSS 文件,有较大地被写入内存.
Memory Cache 优先级大于 Disk Cache

disk cache

disk cache 将资源缓存到磁盘中,任何资源都能存储到磁盘中.当保存到内存池中的数据达到一个程度时,便会将数据保存到[硬盘]

Service Worker Cache

Service Worker 可以理解为一个代理服务器。可以做拦截客户端的请求、向客户端发送消息、向服务器发起请求等,以及最重要的离线资源缓存功能。它是一种独立于主线程之外的 Javascript 线程。它脱离于浏览器窗体,因此无法直接访问 DOM。

Push Cache

Push Cache 浏览器只有在 Memory Cache、HTTP Cache 和 Service Worker Cache 均未命中的情况下才会去询问 Push Cache。
Push Cache 是一种存在于会话阶段的缓存,当 session 终止时,缓存也随之释放。
不同的页面只要共享了同一个 HTTP2 连接,那么它们就可以共享同一个 Push Cache

HTTP Cache

分为强缓存和协商缓存。优先级较高的是强缓存

强缓存

  1. 强缓存是利用 http 头中的 Expires 和 Cache-Control 两个字段来控制的
    (1)public:所有内容都将被缓存(客户端和代理服务器都可缓存)
    (2)private:所有内容只有客户端可以缓存,Cache-Control的默认取值
    (3)no-cache:客户端缓存内容,但是是否使用缓存则需要经过协商缓存来验证决定,
    在浏览器使用缓存前,会往返对比ETag,如果ETag没变,返回304,则使用缓存
    (4)no-store:所有内容都不会被缓存,即不使用强制缓存,也不使用协商缓存
    (5)max-age=xxx (xxx is numeric):缓存内容将在xxx秒后失效

协商缓存

http response header key http request headerkey
ETag(服务端返回的当前资源的etag值) If-None-Match(上一次服务器对于当前资源返回的etag值)
Last-Modified(服务端返回的当前资源的最后修改时间) If-Modified-Since(上一次服务器对于当前资源返回的最后修改时间)

如果服务端提示缓存资源未改动(Not Modified),资源会被重定向到浏览器缓存,这种情况下网络请求对应的状态码是 304。

ETag 只能作为 Last-Modified 的补充和强化存在.因为

  1. 我们编辑了文件,但文件的内容没有改变。服务端并不清楚我们是否真正改变了文件,它仍然通过最后编辑时间进行判断。因此这个资源在再次被请求时,会被当做新资源,进而引发一次完整的响应——不该重新请求的时候,也会重新请求。
  2. 当我们修改文件的速度过快时(比如花了 100ms 完成了改动),由于 If-Modified-Since 只能检查到以秒为最小计量单位的时间差,所以它是感知不到这个改动的——该重新请求的时候,反而没有重新请求了。
  3. Etag 的生成过程需要服务器额外付出开销,会影响服务端的性能。
    Etag 的优先级要高于 Last-Modified

CDN 缓存

全称 \color{red}{Content Delivery Network} 即内容分发网络

可以理解成一个离和你距离很近的、方便从上面获取完整的原始数据的服务器,为保证用户可以从上面获取到最新的内容,它会定期和拥有原始内容的服务器进行同步更新。
这样就可以以更快的速度和更好的连接质量来获取内容。其次,CDN增强了整体的带宽,原本一台服务器变成多台拥有相同内容的服务器,用户被分散到不同的服务器上面去进行下载,平均每个用户能够分到的带宽就会得到明显的提高。同时也可以缓存资源,提升访问速度。

相关文章

  • 【转载】彻底理解浏览器的Http缓存机制

    转自:彻底理解浏览器的缓存机制(http缓存机制) 概述 浏览器的缓存机制也就是我们说的HTTP缓存机制,其机制是...

  • 浏览器缓存机制

    浏览器缓存机制:浏览器缓存机制,其实主要就是http协议定义的缓存机制(如:Expires;Cache-contr...

  • 让我们学习了解浏览器的缓存,提高页面的流畅度

    浏览器的缓存机制也就是我们说的HTTP缓存机制,其机制是根据HTTP报文的缓存标识进行的,所以在分析浏览器缓存机制...

  • Web浏览器的缓存机制

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

  • 2020-08-14 彻底理解浏览器的Http缓存机制

    彻底理解浏览器的Http缓存机制 概述 浏览器的缓存机制也就是我们说的HTTP缓存机制,其机制是根据HTTP报文的...

  • http的缓存机制(个人笔记)

    本文来源:彻底理解浏览器的Http缓存机制 概述 浏览器的缓存机制也就是我们说的HTTP缓存机制,其机制是根据HT...

  • nginx 缓存(11)

    介绍nginx是如何设置缓存之前,我们还是先聊聊web浏览器的缓存机制。 1.浏览器缓存 浏览器的缓存机制也就是我...

  • http 缓存机制

    概述 浏览器的缓存机制也就是我们说的HTTP缓存机制,其机制是根据HTTP报文的缓存标识进行的,所以在分析浏览器缓...

  • 浏览器缓存(http缓存)

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

  • 浏览器缓存

    浏览器的缓存机制 浏览器的缓存机制实际上就是HTTP缓存机制,其实就是根据请求报文中的缓存标识符进行识别然后进一步...

网友评论

      本文标题:浏览器缓存机制

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