经过使用缓存web网站和web应用的性能可以获得显著的提高。Web caches可以减少延迟和网络流量,从而缩短展现资源所花费的时间。web
在http中控制缓存行为的首部字段是Cache-Control,Cache-Control能够有多个指令,指令之间用逗号分割。Cache-Control是通用首部字段,它即能出如今响应头中也能出如今请求头中缓存
1.public
:指明任何缓存区都可以缓存响应服务器
2.private
:指明响应是针对单一用户的,不能存储在共享缓存区中,只有私有缓存区能存储响应网络
3.no-cache
:在使用缓存资源以前要向源服务器验证缓存的有效性异步
4.only-if-cached
:指明客户端只想从缓存中获取响应,不须要与源服务器联系肯定资源是否更新性能
1.max-age=<seconds>
:指定资源被视为有效的最大时间量,单位为秒网站
2.s-maxage=<seconds>
:与max-age=<seconds>指令的做用类似,可是它只对共享缓存有效,对私有缓存无效3d
3.max-stale[=<seconds>]
:即便缓存资源过时客户端仍是接受缓存区中的资源。若是未指定数值,那么不管过时多久,客户端都接受缓存区中的响应,若是指定了具体数值,那么即便过时,只要处于max-stale指定的时间内,客户端仍是接受缓存区中的资源code
4.min-fresh=<seconds>
:代表从缓存区中返回未过指定时间的缓存资源orm
5.stale-while-revalidate=<seconds>
:指示客户端愿意接受一个过时的响应,同时在后台异步检查一个新的响应。秒值表示客户机愿意接受过时响应的时间。
6.stale-if-error=<seconds>
:若是检查新资源失败,客户端愿意接受过时的资源。秒值指示客户端在初始过时后愿意接受过时响应的时间。
1.must-revalidate
:在使用过时的缓存资源以前,必须向源服务器确认缓存资源的状态而且不会使用过时的资源。它会忽略max-stale
[=<seconds>]指令
2.proxy-revalidate
:和must-revalidate做用相似,可是它只应用于共享缓存,会被私有缓存忽略
3.immutable
:指明在任什么时候候都不能改变响应体
1.no-store
:不缓存请求和响应中的任何内容
2.no-transform
:缓存不能改变请求和响应中的任何实体主体(The Content-Encoding, Content-Range, Content-Type 头部字段不能被修改)