itRef.cn技术参考网站

当前位置: 主页 > 网站建设 >

Expires、Cache-Control、Last-Modified、ETag详解

时间:2010-07-21 20:06来源:未知 作者:adm_ref 点击:
网页缓存主要由以下几个参数决定: 1. Expires (服务器端设置) 2. Cache-Control (服务器端设置、页面源码设置) 3. Last-Modified(服务器端设置) 4. ETag(服务器端设置) 其中Expires和Cache-Control设置过期时间,Last-Modified和ETag设置文件有效性

网页缓存主要由以下几个参数决定:

1. Expires (服务器端设置)
2. Cache-Control (服务器端设置、页面源码设置)
3. Last-Modified(服务器端配置)
4. ETag(服务器端配置)

其中Expires和Cache-Control设置过期时间,Last-Modified和ETag设置文件有效性。

1. Expires 过期设置

对于静态页面,如html、gif、jpg、css、js,在Apache服务器默认的配置下,不添加该参数,如果是动态页面(如:php等),如果代码中没有显示设置,则服务端会自动添加某个过期的时间,以保证动态页面即时更新。

Apache配置例子:

  #启用expires_module模块
  LoadModule expires_module modules/mod_expires.so
  # 启用有效期控制
  ExpiresActive On
  # GIF有效期为1个月
  ExpiresByType image/gif A2592000
  # HTML文档的有效期是最后修改时刻后的一星期
  ExpiresByType text/html M604800
  #以下的含义类似
  ExpiresActive On 
  
ExpiresByType image/gif "access plus 1 month" 
  
ExpiresByType image/jpeg "access plus 1 month" 
  
ExpiresByType image/x-icon "access plus 1 month" 
  
ExpiresByType image/png "access plus 1 month" 
  
ExpiresByType text/html "access plus 30 minutes" 
  
ExpiresByType text/css "access plus 30 minutes" 
  
ExpiresByType text/js "access plus 30 minutes" 
  
ExpiresByType application/x-javascript "access plus 30 minutes"
  
ExpiresByType application/x-shockwave-flash "access plus 30 minutes" 

M表示服务端最后修改时间,A代表客户端访问时间,字母面的数字表示基准时间后多少秒

2. Cache-Control 缓存通知

Cache-Control: no-cache | must-revalidate | max-age=0 | no-store

如果没有启动mod_cern_meta模块,则服务器会把expires的值换算成以秒为单位的一个 delta值,赋值给max-age,以保持一致。如果启动mod_cern_meta模块,并且设置了max-age值,Apache会将这个覆盖Expires字段。

Apache配置:

  LoadModule headers_module modules/mod_headers.so
  Header set Cache-Control "no-cache,no-store"
 

在返回给客户端的页面的header就会包括Cache-Control: no-cache,no-store,但不会反应到源码中

3. Last-Modified 最后修改时间

如果客户端请求的是静态页面,则服务端会读取文件Last-Modified的信息一并返回给客户端。

FF有自己的机制计算Last-Modified,而不会使用服务端相应回来的Last-Modified

4. ETag(entity tag) 实体标记

ETag是跟严格的文件有效性的检测参数,当文件在1秒钟内进行两次修改,Last-Modified的值是一样的,但ETag值是不一样的。这个参数就可以明确的告诉客户端浏览器文件已经发生更改。 

Apache配置,FileETag参数控制ETag的开关,以及生成的方式([±]INode | MTime | Size | None)

 

(责任编辑:wiwi) 转载请注明 来源于itRef.cn技术参考网站:
顶一下
(0)
0%
踩一下
(2)
100%
------分隔线----------------------------
栏目列表
推荐内容