作用
再次访问网页能够加快用户访问速度和节省流量。
缓存策略
HTTP Cache-Control 标头定义了缓存策略,定义了在什么条件下可以缓存响应,及可以缓存多久。
在HTTP/1.1规范定义的,取代了之前同来定义缓存策略的标头(如Expires)
缓存条件
no store
不可缓存
no cache
每次使用缓存都要去服务端确认资源是否是最新的。
能在哪缓存
Public
默认
privite
只能在用户浏览器上缓存,不可在公共缓存上缓存
存多久
MAX-AGE
使用缓存
请求资源时,若无缓存,要从服务端获取
是否是最新的
如果是最新的则继续使用缓存,否则再从服务端请求。
缓存的可用信息都放在 http response header
中
EXPIRES
标示了过期时间。
缺点
如果客户端和服务器时间不一致,文件更新的信息也会有误差。
http/1.0
LAST-MODIFIED
资源最后更新时间。精确到秒。
客户端再次请求资源时,会把这个值放在request header If-Modified-Since
中,来判断有无更新。
http/1.0
缺点
若在秒内有更新,则有误差。
ETAG
返回一个根据文件内容变化的字符串标识,浏览器接受后,下一次请求,会在request header 作为 If-None-Match的值发送,如果etag值没有变化,则使用缓存。优先级最高。
RESPONSE STATUS
服务器取得最新结果
返回200
直接从本地缓存读取的资源
返回200
和服务器确认后使用缓存
返回304
存储位置
浏览器会判断放在memory cache或disk cache中,品牌不同会有差异。
如何配置
在服务端配置,可参考https://github.com/h5bp/server-configs
参考
补充阅读
注意
对于非静态资源,如获取用户信息的json (/user/:id
),浏览器可能忽视缓存。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。