多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] ### http缓存分类: ~~~ http缓存分为两类:强制缓存和协商缓存,强制缓存中存在三种状态 ~~~ #### 强制缓存: 强制缓存就是向浏览器缓存查找该请求结果,并根据该结果的缓存规则来决定是否使用该缓存结果的过程,强制缓存的情况主要有三种(暂不分析协商缓存过程),如下: 不存在该缓存结果和缓存标识,强制缓存失效,则直接向服务器发起请求(跟第一次发起请求一致),如下图: ![](https://img.kancloud.cn/e3/dc/e3dcb9921496cca776b6255e84df8a6e_649x384.png) 存在该缓存结果和缓存标识,但该结果已失效,强制缓存失效,则使用协商缓存(暂不分析),如下图 ![](https://img.kancloud.cn/86/48/8648a638b7a3cf05978dc04c48083ed7_687x407.png) 存在该缓存结果和缓存标识,且该结果尚未失效,强制缓存生效,直接返回该结果,如下图 ![](https://img.kancloud.cn/7e/1d/7e1d04502f0e8c2b35ff69a55ab50451_662x340.png) 说明: 控制强制缓存的字段分别是Expires和Cache-Control,其中Cache-Control优先级比Expires高。 #### 协商缓存: 协商缓存就是强制缓存失效后,浏览器携带缓存标识向服务器发起请求,由服务器根据缓存标识决定是否使用缓存的过程,主要有以下两种情况: 协商缓存生效,返回304,如下 ![](https://img.kancloud.cn/ba/99/ba99af8d5063d5f63e5276dc7ab6c39b_719x547.png) 协商缓存失效,返回200和请求结果结果,如下 ![](https://img.kancloud.cn/e3/d9/e3d963c9354c3181ff905120c6690ac7_768x568.png) 说明: 协商缓存的标识也是在响应报文的HTTP头中和请求结果一起返回给浏览器的,控制协商缓存的字段分别有:Last-Modified / If-Modified-Since和Etag / If-None-Match,其中Etag / If-None-Match的优先级比Last-Modified / If-Modified-Since高。