缓存分类
- HTTP缓存
- 浏览器缓存
HTTP缓存
http缓存主要是在请求服务器资源时对资源进行的缓存处理,主要包含强缓存和协商缓存
http请求缓存步骤:
- 发起请求
- 在浏览器中查找是否存在缓存
- 没有缓存,则直接发起http请求
- 存在缓存,判断缓存是否失效,通过Cache-Control、Expire
- 失效,则请求协商缓存,即通过Etag或者Last-Modified
强缓存
强缓存即在浏览器中查找缓存内容,如果缓存内容不失效,则直接使用改缓存结果
缓存是否失效通过请求头中Expire和Cache-Control进行判断,会在响应头中返回,Cache-Control的优先级高于Expire,如图:
强缓存资源缓存位置主要有memory cache, disk cache, Service Worker 等,浏览器查找缓存时会先查找 Service Worker,然后查找 memory cache ,最后查找 disk cache
- memory cache 资源存储在内存中,查找时间短,存储时间短
- disk cache 资源存储在硬盘中,查找时间长,可以持久存储
- service worker 单独存储在一个位置,持久存储
协商缓存
强缓存获取失败后,会发起协商缓存的请求,请求头部携带Etag或者Last-Modified缓存标志,由服务器判断是否使用缓存,etag优先级高于Last-Modified
浏览器缓存
本地缓存
- cookie 4k左右
- localstorage 5M左右
- sessionStorage 5M左右
- indexDB等大容量存储 50M左右
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。