乐趣区

关于javascript:浏览器缓存机制缓存位置

从缓存地位上来说分为四种,并且各自有优先级,当顺次查找缓存且都没有命中的时候,才会去申请网络。

  • Service Worker
  • Memory Cache
  • Disk Cache
  • Push Cache

Service Worker

Service Worker 是运行在浏览器背地的独立线程,个别能够用来实现缓存性能。应用 Service Worker 的话,传输协定必须为 HTTPS。因为 Service Worker 中波及到申请拦挡,所以必须应用 HTTPS 协定来保障平安。Service Worker 的缓存与浏览器其余内建的缓存机制不同,它能够让咱们自在管制缓存哪些文件、如何匹配缓存、如何读取缓存,并且缓存是持续性的

Memory Cache

Memory Cache 也就是内存中的缓存,次要蕴含的是以后中页面中曾经抓取到的资源, 例如页面上曾经下载的款式、脚本、图片等。读取内存中的数据必定比磁盘快, 内存缓存尽管读取高效,可是缓存持续性很短,会随着过程的开释而开释 一旦咱们敞开 Tab 页面,内存中的缓存也就被开释了

Disk Cache

Disk Cache 胜在容量和存储时效性上,针对容量大,读取速度慢,然而时效长的资源。此类资源是从磁盘当中取出的,此资源不会随着该页面的敞开而开释掉,因为是存在硬盘当中的,下次关上仍会 from disk cache。

相比于内存缓存,硬盘缓存会依据 HTTP 头部中的字段判断哪些资源须要缓存,哪些能够间接应用或者须要从新申请。

Push Cache

Push Cache 是 HTTP/2 中的内容,是 HTTP2 在 server push 阶段存在的缓存,当以上三种缓存都没有命中时,它才会被应用,优先级最低,然而是一种趋势。同时,其缓存工夫也很短,只针在对立会话(Session)中存在,一旦会话完结就被开释。其具备以下特点:

  • 所有的资源都能被推送,能够推送 no-cacheno-store 的资源
  • 工夫较短,在 Chrome 浏览器中只有 5 分钟左右,同时它也并非严格执行 HTTP 头中的缓存指令,连贯一旦被敞开,就会被开释
  • 多页面能够应用雷同的 HTTP/ 2 连贯,也就是能够应用同一个 Push Cache。这次要还是依赖浏览器的实现而定,出于对性能的思考,有的浏览器会对雷同域名但不同的 tab 标签应用同一个 HTTP 连贯。
  • Push Cache 中的缓存只能被应用一次
  • 浏览器能够拒绝接受曾经存在的资源推送
  • 你能够给其余域名推送资源
退出移动版