## 强缓存
**不会向服务器发送请求,直接从缓存中读取资源**
1,Expires
**缓存过期时间,用来指定资源到期的时间,是服务器端的具体的时间点**
Expires=max-age + 请求时间
**Expires 是 HTTP/1 的产物,受限于本地时间,如 果修改了本地时间,可能会造成缓存失效**
2, Cache-Control
在HTTP/1.1中,Cache-Control主要用于控制网页缓存。比如当`Cache-Control:max-age=120 `代表请求创建时间后的120秒,缓存失效
横向对比 Expires VS Cache-Control
#### 协商缓存
**协商缓存就是强制缓存失效后,浏览器携带缓存标识向服务器发起请求,由服务器根据缓存标识决定是否使用缓存的过程
1,Last-Modified和If-Modified-Since
? 第一次访问时,服务器会返回
Last-Modified: Fri, 22 Jul 2016 01:47:00 GMT
? 浏览器下次请求时 携带If-Modified-Since这个header , 该值为 Last-Modified
? 服务器接收请求后,对比结果,若资源未发生改变,则返回304, 否则返回200并将新资源返回给浏览器
? 缺点:只能精确到秒,容易发生单秒内多次修改,检测不到
2,ETag和If-None-Match
? Etag是服务器响应请求时,返回当前资源文件的一个唯一标识(由服务器生成),只要资源有变化,Etag就会重新生成
? 流程同上
对比 Last-Modified VS ETag
1,精度不一样 - Etag 高
2,性能上 - Last-Modifi 高
3,优先级 - Etag 高
原文:https://www.cnblogs.com/chenlulu1122/p/11980737.html