“`” 参考回答:

缓存分为两种:强缓存和协商缓存,根据响应的header内容来决定。

<figure><table>
<thead>
<tr><th> </th><th>获取资源形式</th><th>状态码</th><th>发送请求到服务器</th></tr></thead>
<tbody><tr><td>强缓存</td><td>从缓存取</td><td>200(from cache)</td><td>否,直接从缓存取</td></tr><tr><td>协商缓存</td><td>从缓存取</td><td>304(not modified)</td><td>是,通过服务器来告知缓存是否可用</td></tr></tbody>
</table></figure>

 

强缓存相关字段有expires,cache-control。如果cache-control与expires同时存在的话,cache-control的优先级高于expires。

协商缓存相关字段有Last-Modified/If-Modified-Since,Etag/If-None-Match

 

因为服务器上的资源不是一直固定不变的,大多数情况下它会更新,这个时候如果我们还访问本地缓存,那么对用户来说,那就相当于资源没有更新,用户看到的还是旧的资源;所以我们希望服务器上的资源更新了浏览器就请求新的资源,没有更新就使用本地的缓存,以最大程度的减少因网络请求而产生的资源浪费。

<img alt=""img"" referrerpolicy=""no-referrer"" src=""https://uploadfiles.nowcoder.com/images/20190312/311436_1552361773903_9DC69E327B4B3691E94CD9D52D10E2C1"">

参考<a class=""url"" href=""https://segmentfault.com/a/1190000008956069"" target=""_blank"">https://segmentfault.com/a/1190000008956069</a>

 

<pre><code> "“`

Was this helpful?

0 / 0

发表回复 0

Your email address will not be published.