最近,复习了下http协议。这里主要回忆分享,学习下报头中的Cache-Control的使用情况。
和Cache-Control一起使用的报头属性还有:Last-Modified: [UTC time]、ETag: [custom flag]
首先说明下Cache-Control的使用情况:
1 保鲜期only
这个是最最基础的一种策略,只需要在响应头中设定:
Cache-control: max-age=[secs]
[secs]是cache在客户端存活的秒数。
eg:
Cache-control: max-age=3600 说明cache在客户端存活1个小时。
2 保鲜期 + 最后修改时间验证
这里的要素是,在给出保鲜期的同时,给出一个资源的验证方式:
Last-Modified: [UTC time]
[UTC time]标示这个响应资源的最后修改时间,例如 Last-Modified: Mon, 06 Jul 2009 09:21:48 GMT
这个响应头只有配合Cache-control的时候才有实际价值,只是声明校验资源的方式,并不能影响资源的保鲜期时长
利用资源的可校验性,我们可以实现在cache的资源超过保鲜期,浏览器再次请求时的304响应,令浏览器再次使用之前的cache
3.保鲜期 + 自定义标识验证
这里的要素是,在给出保鲜期的同时,给出另一种资源的验证方式:
ETag: [custom flag]
[custom flag]标示这个响应资源的由开发者自己确定的签名验证标识,例如 ETag: "abcdefg",这个响应头只有配合Cache-control的时候才有实际价值,是声明校验资源的方式
ETag的使用为我们实现304响应提供了更多的灵活性,我们可以抛开必须将验证转化成时间格式的限制
参考文章:http://blog.csdn.net/YoungerChen/archive/2011/01/04/6116147.aspx