浏览器缓存不单只有强缓存和协商缓存,还有自带的缓存机制(启发式缓存)。
如何查看请求资源的缓存策略
- Size栏:disk cache代表走磁盘缓存,memory cache代表走内存缓存;
- cache-control栏:查看缓存策略,可以看到配置文件setting.js没有配置任何缓存策略。
启发式缓存
是指没有开启缓存策略,浏览器依然尽可能多的自动缓存的缓存策略。
通常缓存时间为(Date-Last-Modified)*0.1
cache-control
- 协商缓存:Cache-Control : no-cache。
每次请求还是会和服务器去比对资源有没有修改(也就是拿
ETag或者Last-Modified进行比较),如果资源没改变,则直接返回304状态码(Not Modified),说明无需再次传输请求的内容,也就是说可以使用缓存的内容;如果资源改变,则返回200状态码,并且返回新的资源; - 强缓存:max-age=10086,这就表示服务器告诉浏览器这个时间内不要再次请求,但是如果浏览器强制请求获取资源,也是会重新发起拿到返回结果的;
- 不缓存:Cache-Control : no-store。这种情况下
启发式缓存都不生效了,要慎用
缓存破坏
当资源的url改变时(部署时,静态资源带hash值),会重新发起请求获取新资源;