浅谈浏览器的缓存机制
性能优化中简单高效的一种优化方式就是缓存,对于浏览器缓存,相信很多开发者对它即使又爱又恨。究竟什么是浏览器的缓存呢?往简单的说,浏
性能优化中简单高效的一种优化方式就是缓存,对于浏览器缓存,相信很多开发者对它即使又爱又恨。究竟什么是浏览器的缓存呢?往简单的说,浏览器缓存就是把一个已经请求过的web资源进行拷贝存储在浏览器中。缓存会根据进来的请求保存输出内容的副本。在下一个请求到来时,浏览器会识别是否是相同的URL,如果URL相同,缓存会根据缓存机制决定是何种方式发送请求(使用副本响应或是再次向源服务器发送请求)。
合理使用缓存不仅能减少网络带宽带来的消耗,减少服务器压力,更能减少网络延迟,加快页面响应速度。
实现缓存功能的位置有四种,分别为Service Worker、Memory Cache、Disk Cache、Push Cache(推送缓存),并且各自有优先级。Service Worker的缓存是可持续性的,它可以让我们自由控制缓存的文件,因Service Worker涉及请求拦截,所以传输协议必须是HTTPS;Memory Cache,通俗来说就是内存中的缓存,,它的缓存的持续性短,会随着进程的释放而释放。Disk Cache,就是存储在硬盘中的缓存,缓存的容量大,但缺点比较明显:读取速度慢。Push Cache只存在Session会话中,一旦会话结束就会被释放。
浏览器缓存有自身的策略,通过设置HTTP Header来实现,主要分强缓存、协商缓存两种。强缓存就是向浏览器缓存查找请求的结果,并根据结果的缓存规则来决定是否使用该缓存结果的过程。强缓存有属于自己的一个缓存规则:当浏览器向服务器发起请求时,服务器会将缓存规则放入HTTP响应报文的HTTP头中和请求结果一起返回给浏览器,控制强缓存的字段分别是Expires、Cache-Control,且后者的优先级比前者高。协商缓存是在强缓存失效后,浏览器携带缓存标识向服务器发起请求,由服务器根据缓存标识决定是否使用缓存的过程。若是协商缓存生效,会返回304和Not Modified。若是协商缓存失效,会返回200以及请求的结果。
协商缓存失效
协商缓存生效
缓存机制