一、首先是走强制缓存,这时候有三种情况:
1、不存在该缓存结果和缓存标识,那当然是缓存失败了,然后再直接向服务器发起请求。
2、存在该缓存结果和缓存标识,但该结果已失效(没死透),则使用协商缓存。
3、存在该缓存结果和缓存标识,且该结果尚未失效,直接返回该结果。
二、协商缓存,通过两对标识,向服务器判断是否使用失效的缓存结果
1、Etag / If-None-Match 比 Last-Modified / If-Modified-Since 优先级高。
2、浏览器使用 If-None-Match 或者 If-Modified-Since 向服务器发起请求,如果200则是重新返回的新资源;304则代表资源无更新,可继续使用缓存文件。
参考:彻底理解浏览器的缓存机制