一般来说,浏览器接收到url后不会立刻向服务器发送请求,而是先在浏览器缓存中寻找,然后再根据情况决定是否向服务器发送请求。而每次向服务器请求之后会将结果和缓存标识存到浏览器中。
强制缓存就是向浏览器缓存查找该请求结果,并根据该结果的缓存规则来决定是否使用该缓存结果的过程。当浏览器向服务器发起请求时,服务器会将缓存规则放入HTTP响应报文的HTTP头中和请求结果一起返回给浏览器,控制强制缓存的字段分别是 Expires 和 Cache-Control,其中Cache-Control优先级比Expires高。
协商缓存就是强制缓存失效后,浏览器携带缓存标识向服务器发送请求,根据服务器缓存标识决定是否使用缓存的过程,同样,协商缓存的标识也是在响应报文的http头中和请求结果一起返回给浏览器的。控制协商缓存的字段有:Last-Modified / If-Modified-Since 和 Etag / If-None-Match,其中Etag的优先级比Last-Modified要高。
协商缓存主要返回两种情况:
获取资源方式 | 状态码 | 发送请求到服务器 | |
---|---|---|---|
强缓存 | 从缓存取 | 200(from cache) | 否,直接从缓存取 |
协商缓存 | 从缓存取 | 304(not modified) | 是,通过服务器来告知缓存是否可用 |
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/qq_46186155/article/details/123405794
内容来源于网络,如有侵权,请联系作者删除!