参考网址:https://www.cnblogs.com/chenqf/p/6386163.html
HTTP缓存有多种规则,根据是否需要重新向服务器发起请求来分类,将其分为两大类(强制缓存,对比缓存)
两类缓存规则的不同,强制缓存如果生效,不需要再和服务器发生交互,而对比缓存不管是否生效,都需要与服务端发生交互。
两类缓存规则可以同时存在,强制缓存优先级高于对比缓存,也就是说,当执行强制缓存的规则时,如果缓存生效,直接使用缓存,不再执行对比缓存规则。
1、from disk cache: 磁盘缓存(一般css文件)
2、from memory cache: 内存缓存(一般js文件、图片)
3、304 not modified(本身资源大小)
Expires:服务器返回的到期时间(http1.0,http1.1已经不适用)
Cache-Control: 通用消息头字段被用于在http 请求和响应中通过指定指令来实现缓存机制。缓存指令是单向的, 这意味着在请求设置的指令,在响应中不一定包含相同的指令。
1、public:表明响应可以被任何对象(包括:发送请求的客户端,代理服务器,等等)缓存
2、private:表明响应只能被单个用户缓存,不能作为共享缓存(即代理服务器不能缓存它)。
3、no-cache: 强制对比缓存;在释放缓存副本之前,强制高速缓存将请求提交给原始服务器进行验证。
4、max-age=<seconds>设置缓存存储的最大周期,超过这个时间缓存被认为过期(单位秒)。
ETag:
HTTP响应头是资源的特定版本的标识符。