取值
public:所有内容都将被缓存(客户端和代理服务器都可缓存)
private:所有内容只有客户端可以缓存,Cache-Control的默认取值
no-cache:客户端缓存内容,但是是否使用缓存则需要经过协商缓存来验证决定
no-store:所有内容都不会被缓存,即不使用强制缓存,也不使用协商缓存
兼容方案:作为忽略 no-store 的过时实现的解决方法,你可能会看到使用了诸如以下内容的 kitchen-sink 标头,参考右侧链接:<br>Cache-Control: no-store, no-cache, max-age=0, must-revalidate, proxy-revalidate
no-store 并不是退出缓存的最正确方法,不建议随意授予 no-store,因为你失去了 HTTP 和浏览器所拥有的许多优势,包括浏览器的后退/前进缓存。因此,要获得 Web 平台的全部功能集的优势,最好将 no-cache 与 private 结合使用。<br>常见的默认情况下始终传输最新版本资源的方法通常是 Cache-Control: no-cache ,参考右侧链接
max-age=xxx (xxx is numeric):缓存内容将在xxx秒后失效
计时说明:计时是以响应时间开始计算的,例如:
max-age=0 和 must-revalidate 的组合与 no-cache 具有相同的含义
其他取值:s-maxage、min-fresh 等,见
举例
由上面的例子我们可以知道:<br> HTTP响应报文中expires的时间值,是一个绝对值<br> HTTP响应报文中Cache-Control为max-age=600,是相对值<br> 由于Cache-Control的优先级比expires,那么直接根据Cache-Control的值进行缓存,意思就是说在600秒内再次发起该请求,则会直接使用缓存结果,强制缓存生效。<br> 注:在无法确定客户端的时间是否与服务端的时间同步的情况下,Cache-Control相比于expires是更好的选择,所以同时存在时,只有Cache-Control生效。<br>