简单记录一下浏览器缓存策略的理解:
1,按浏览器缓存位置来看分为四种:从上到下优先级依次降低
1) Service Worker:Service Worker 是运行在浏览器背后的独立线程,一般可以用来实现缓存功能。
这是优先级最高的缓存,并且与其它三种不同,是可定制化的缓存,而其它三种只能通过某些字段的设置来规定内存的时效性和方式等,
会在内存中(不确定是不是浏览器内存)开辟一个独立的空间去做缓存,可以手动清空或超出浏览器自动清空,
Service Worker 是由开发者编写的额外的脚本,且缓存位置独立
2)memory cache: 内存缓存
内存缓存,会缓存页面的所有资源,
生命周期与tab页相同,除了有限的字段如no-store 之外几乎不可控,
会在同一个页面资源过大时自动清除最旧资源,
浏览器为了加快读取缓存速度而进行的自身的优化行为,不受开发者控制,也不受 HTTP 协议头的约束,算是一个黑盒。
3)disk cache: 硬盘缓存
是我们内存管理的主要力量,
可以通过响应头字段的设置来确定缓存方式及过期时间等,相应字段可以查看资料,
包括强制缓存、协商缓存两种,一般来说强缓存失效后会使用协商缓存,即强制缓存会优先于协商缓存,
协商缓存失效一般会做网络请求。
4)push cache: 推送缓存
是http2.0的内容,优先级在网罗请求之前
2,参考资料:比总结要更重要一些
一文读懂前端缓存: https://juejin.im/post/5c22ee806fb9a049fb43b2c5?utm_source=gold_browser_extension#heading-1
深入理解浏览器的缓存机制: https://www.jianshu.com/p/54cc04190252