深入理解浏览器缓存机制-[七日打卡7]

427 阅读2分钟

介绍

缓存是Web开发中经常遇到的一个话题,利用好缓存是解决性能优化问题中的一个简单又高效的方法。一个优秀的缓存策略可以加快网页加载速度、减少延迟,提升用户体验的同时还可以减少带宽,降低成本,降低网络负荷。

对于一个HTTP请求数据来说,一般分为请求、处理和响应3个阶段,浏览器缓存可以帮助我们在第一阶段和第三阶段中优化性能。比如说直接用本地缓存数据而不发起请求,或者发起了请求但后端存储的数据和前端的一致,那么就没必要再将服务端数据传递回来,从而减少了响应数据。

缓存类型

  1. memory cache:内存中的缓存,主要包含页面中已经下载的资源,例如脚本、样式和图片等资源。读取内存中的数据肯定是速度比读取磁盘的速度要快,但是缓存的时间不会很长,会随着进程的释放而释放。一旦我们关闭 Tab 页面,内存中的缓存也就被释放了。

  2. disk cache:存储在硬盘中的缓存,读取速度相对于内存慢了点,但是可存放的容量比内存大,并且时效性长。

  3. prefetch cache:浏览器中使用preloader相关指令(例如<link rel="prefetch" />)下载的资源,可以一边解析css/js,一边网络请求下一个资源。preloader指令是页面优化的常见手段之一。

浏览器分为强制缓存协商缓存2种。

  1. 强缓存:不会向服务器发起请求,直接从本地缓存中读取资源。在chrome的调试工具Network面板中可以看到该请求返回200的状态码,并且Size不会显示具体数字,而是显示from disk cachefrom memory cache。强缓存可以通过设置两种 HTTP Header 实现:ExpiresCache-Control

  2. 协商缓存:协商缓存就是强制缓存失效后,浏览器携带缓存标识向服务器发起请求,由服务器根据缓存标识决定是否使用缓存的过程。

参考资料

  1. www.jianshu.com/p/54cc04190…