-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
前言
下面讨论的是都是针对响应头返回的控制浏览器缓存策略的标识,用户主动通过请求头控制浏览器缓存的不在这讨论。
强缓存
-
强制缓存就是向浏览器缓存查找该请求结果,并根据该结果的缓存规则来决定是否使用该缓存结果的过程。强缓存又分为两种
Expires
和Cache-Control
。 -
Expires
,Cache-Control
都是用来标识缓存过期时间,区别在于Expires
是绝对时间,与真实时间有所偏差,而Cache-Control
-
Cache-Control
的值一般使用的是max-age
、no-cache
、no-store
协商缓存
-
协商缓存就是强制缓存失效后,浏览器携带缓存标识向服务器发起请求,由服务器根据缓存标识决定是否使用缓存的过程。
-
请求携带的标识与之前服务器返回标识对应:
If-Modified-Since
=》Last-Modified
、If-None-Match
=>Etag
-
对于
Etag
与Last-Modified
都是用来记录文件是否变动,区别在于Last-Modified
上次修改文件内容的时间,但存在修改内容时间发生了变动,但是文件内容却没变动,所Etag
弥补这个不足,Etag
是这个资源内容的一个标识。 -
对于服务器返回俩种情况,304资源没有更新,继续使用过期的缓存,并且重置缓存的时间。200资源发生了变动、拿到的是新的资源惊喜协商户村。
图解
总结:
- 强制缓存和协商缓存前提是存在缓存。
- 强制缓存和协商缓存都针对静态资源。
- 强制缓存在前,协商缓存在后。
- 资源未过期触发强制缓存,资源过期后再触发协商缓存。
- 判断过期的方法expires(绝对时间)、cache-control(相对时间)
- 判断资源是否有更新(Last-Modified 和 ETag)
Metadata
Metadata
Assignees
Labels
No labels