再次访问网页可以加快用户访问速度和节省流量。git
HTTP Cache-Control 标头定义了缓存策略,定义了在什么条件下能够缓存响应,及能够缓存多久。github
在HTTP/1.1规范定义的,取代了以前同来定义缓存策略的标头(如Expires)web
不可缓存json
每次使用缓存都要去服务端确认资源是不是最新的。浏览器
默认缓存
只能在用户浏览器上缓存,不可在公共缓存上缓存服务器
使用缓存 请求资源时,若无缓存,要从服务端获取编辑器
若是是最新的则继续使用缓存,不然再从服务端请求。 缓存的可用信息都放在 http response header
中spa
标示了过时时间。code
若是客户端和服务器时间不一致,文件更新的信息也会有偏差。
http/1.0
资源最后更新时间。精确到秒。 客户端再次请求资源时,会把这个值放在request header If-Modified-Since
中,来判断有无更新。
http/1.0
若在秒内有更新,则有偏差。
返回一个根据文件内容变化的字符串标识,浏览器接受后,下一次请求,会在request header 做为 If-None-Match的值发送,若是etag值没有变化,则使用缓存。优先级最高。
返回200
返回200
返回304
浏览器会判断放在memory cache或disk cache中,品牌不一样会有差别。
在服务端配置,可参考github.com/h5bp/server…
对于非静态资源,如获取用户信息的json (/user/:id
),浏览器可能忽视缓存。
本文使用 mdnice 排版