浏览器中从存储位置看缓存的分类

从存储位置看,浏览器缓存分为哪几种?

分为4种:

  • Service Worker(线程缓存)
  • Memory Cache(内存缓存)
  • Disk Cache(硬盘缓存)
  • Push Cache(推送缓存)

Service Worker

定义:运行在浏览器背后的独立线程,一般可以用来实现缓存功能。

注意:使用Service Worker的话,传输协议必须为HTTPS

功能:控制缓存哪些文件,如何匹配缓存、如何读取缓存,并且缓存是持续性的。

实现缓存功能三个步骤:

  • 实现需要注册Service Worker
  • 然后监听install事件以后就可以拦截请求的方式查询是否缓存,存在缓存的话就可以直接读取缓存文件,否则就求请求数据。
  • 当Service Worker没有命中缓存的时候,我们需要去调用fetch函数去获取数据。也就是说,如果我们没有在Service Worker命中缓存的话,会根据缓存查找优先级去查找数据,浏览器会显示我们是从Service Worker中获取的内容。

Memory Cache

定义:内存中的缓存,主要包含当前页面中已经抓取到的资源,例如页面上已经下载的样式、脚本,图片等。

注意:我们一旦关闭Tab页面,内存中的缓存也就被释放。且不会关心HTTP缓存头Cache-Control是什么值。

Disk Cache

定义:缓存在硬盘中的缓存,读取速度慢点,但什么都能存储到磁盘中,比之Memory Cache 胜在容量和存储时效性上。
注意:它会根据HTTP Header中的字段判断哪些资源需要缓存,哪资源不请求直接使用,哪些资源已经过期需要重新请求。

Push Cache

定义:Push Cache(推送缓存)是HTTP/2的内容,当以上三种缓存都没有命中时,它会被使用。它只会在会话(Seesion)中存在,一旦会话结束就会被释放,并且缓存时间很短暂,在谷歌浏览器只有5分钟左右。

特性:

  • 所有的资源都能被推送,并且能够被缓存
  • Push Cache中的缓存只能被使用一次
  • 可以推送其它域名资源
  • 浏览器可以拒绝接受已经存在的资源推送
  • 一旦关闭,Push Cache就会被释放
  • 可以推送到no-cache 和 no-store的资源

你可能感兴趣的:(计算机网络,缓存,计算机网络,浏览器)