-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
Description
HTTP 1.0 使用 Expires 的 header 来控制,指定一个 GMT 的过期时间,但是当浏览器时间不准的时候就有问题
HTTP 1.1 使用 max-age 来设置过期时间,让浏览器自己计算。并且把所有的缓存相关的控制都放到了 Cache-Control 的 header 里, 像 max-age 等叫做指令,用逗号隔开
HTTP 1.1 加入了协商缓存的功能,通过 If-None-Match 和 If-Modified-Since 的 header 带资源的 Etag 和 Last-Modied 到服务器询问是否过期,过期返回 200 和新的内容,没过期返回 304,使用浏览器缓存数据
其他 Cache-Control 指令:
- public: 允许代理服务器缓存资源
- s-maxage: 代理服务器的资源过期时间
- private: 不允许代理服务器缓存资源,
- immutable: 就算过期了也不用协商,资源就是不变的
- max-stale: 过期了一段时间的话,资源也能用
- stale-while-revalidate: 在验证(协商)期间,返回过期的资源
- stale-if-error: 验证(协商)出错的话,返回过期的资源
- must-revalidate: 不允许过期了还用过期资源,必须等协商结束
- no-store: 禁止缓存和协商
- no-cache: 允许缓存,但每次都要协商