web缓存理解

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(服务器配置了的情况下)。


缓存判断流程


web缓存理解_第1张图片
浏览器第一次请求
web缓存理解_第2张图片
浏览器再次请求

你可能感兴趣的:(web缓存理解)