web缓存更新控制,有几个header来控制:
Request
Cache-Control: max-age=0以秒为单位
If-Modified-Since: Mon, 19 Nov 2012 08:38:01 GMT缓存文件的最后修改时间。
If-None-Match: "0693f67a67cc1:0"缓存文件的Etag值
Cache-Control: no-cache不使用缓存
Pragma: no-cache不使用缓存
Response
Cache-Control: public响应被缓存,并且在多用户间共享
Cache-Control: private响应只能作为私有缓存,不能在用户之间共享
Cache-Control:no-cache提醒浏览器要从服务器提取文档进行验证
Cache-Control:no-store绝对禁止缓存(用于机密,敏感文件)
Cache-Control: max-age=6060秒之后缓存过期(相对时间)
Date: Mon, 19 Nov 2012 08:39:00 GMT当前response发送的时间。原始服务器消息发生的时间
Expires: Mon, 19 Nov 2012 08:40:01 GMT缓存过期的时间(绝对时间)。浏览器总是优先使用cache-control,如果没有cache-control才考虑Expires。web服务器通过expires响应头告诉浏览器在过期时间之前可以直接使用缓存的内容。expires响应头类似:Expires:Fri, 15 Jan 2016 06:11:13 GMT。expires指定了一个确定的时间,这就要求客户端和服务器端在时间上保持一致。
Last-Modified: Mon, 19 Nov 2012 08:38:01 GMT服务器端文件的最后修改时间
ETag: "20b1add7ec1cd1:0"服务器端文件的Etag值
配置:
这些响应头信息可以在代码中添加,当然最好在服务器统一配置。
apache的mod_expires模块允许通过配置文件控制HTTP的"Expires"和"Cache-Control"头内容。例如在apache中配置:
ExpiresActive On
ExpiresDefault "access plus 1 years"
这样图片、脚本、和样式文件将会被缓存1年。详细配置参考:
http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/mod_expires.html
response header中每次都会返回max-age、date、expires、 last-modified(服务器配置了的情况下)。
缓存判断流程