浏览器缓存 | 青训营笔记
这是我参与「第四届青训营 」笔记创作活动的的第3天
缓存机制
- 浏览器发送请求前,根据请求头中的expires和cache-control判断是否命中强缓存策略(包括是否过期),如果命中,则直接从缓存中获取资源,并且不会发送请求。
- 如果没有命中强缓存,浏览器会发送请求,根据请求头中的last-modified和etag判断是否命中协商缓存,如果命中,直接从缓存中获取资源。 3.如果还没有命中,则从服务器端获取资源。
强缓存
强缓存就是不会向服务器发送请求,直接从缓存中读取资源
强缓存原理
强缓存就是在浏览器缓存中查找该请求结果,然后根据该结果的缓存规则来决定是否使用该缓存结果的过程。情况主要有三种:
- 存在该缓存结果和缓存标识,并且结果尚未失效,强缓存生效,直接返回该结果
- 存在该缓存结果和缓存标识,但是已经失效,则进行协商缓存
- 不存在缓存结果和缓存标识,则直接向服务器发送请求
解释:
缓存规则:当浏览器向服务器发送请求时,服务器会将缓存规则放入HTTP响应报文的响应头中和请求结果一起返回给浏览器,也就是expires字段和cache-control字段
协商缓存
协商缓存就是当强缓存失效后,浏览器会待着缓存标识向服务器发起请求,由服务器根据缓存标识决定是否使用缓存的过程,主要有两种情况:
- 协商缓存生效,返回304和Not Modified,获取缓存中的资源
- 协商缓存失效,返回200和请求结果
解释:
etag字段和last-modified字段:就是用来判断资源是否进行了修改,没有修改返回304,修改了返回200