Last-Modified(1) 第一次请求的响应头返回Last-Modified内容,时间格式如:Wed, 22 Jul 2010 07:08:07 GMT
(2)第二次发送的请求头包含If-Modified-Since(值为第一次请求的响应包中的Last-Modified),服务器对比If-Modified- Since请求头与Last-Modified,如果没有更新就返回304响应,否则按正常请求处理.
Etag(1)第一次请求的响应头返回Etag内容,该内容默认由文件的索引节点(Inode),大小(Size),最后修改时间(MTime)决定.
(2)第二次发送的请求头包含If-None-Match(值为第一次请求的响应包中的 Etag),服务器对比请求头If-None-Match与Etag,如果一致就表示没有更新返回304响应,否则按正常请求处理.
FileETag INode MTime Size 默认值
FileETag None 去掉Etag字段
Expires如果请求头有Expire,浏览器在这段时间内就不会去服务器请求,直接使用本地缓存.时间格式同Last-Modified.
修改expires 的同时会相应修改max-age的值,两者保持一致.Date + Max-age = Expires
LoadModule expires_module modules/mod_expires.so
ExpiresActive On
ExpiresByType image/gif "access plus 14 days"
Cache-control: max-age=
max-age的值表示多少秒后失效,失效之前不会去服务器请求,功能同Expires,但优先级高于Expries.
Last-Modified与Etag还是要请求服务器的,只是仅返回304头,不返回内容.
Expires与max-age缓存是不需要请求服务器的,直接从本地缓存中取.
F5 与 Ctrl+F5F5 四种方式都会向服务器发送请求,没有过期返回304,过期就更新cache返回200.
(根据 Last- Modified 判断是否过期, 如果没有此头,将以过期处理,返回200)Ctrl+F5 清空本地缓存,全部从服务器重新获取.返回200.
在firefox下:
F5 HTTP请求头包含 Cache-Control max-age=0
Ctrl+F5 HTTP请求头包含 Cache-Control no-cache
Pragma no-cache
注:(1)在浏览器直接输入URL并按回车 (2)链接跳转.以上两种方式HTTP请求处理不同.
一.使用Expires和Cache-control,会直接本地判断是否过期,不会请求服务器.
二.单独使用Last-Modified 跟浏览器设置有关系:
ie6 同expires方式(默认)
firefox3.6 url后面无参数同expires方式, 反之同F5方式
chrome8.0 同F5方式
阅读(1028) | 评论(0) | 转发(0) |