apache模块 mod_expires
概述 这些HTTP头向客户端表明了文档的有效性和持久性。如果有缓存,文档就可以从缓存(除已经过期)而不是从服务器读取。接着,客户端考察缓存中的副本,看看是否过期或者失效,以决定是否必须从服务器获得更新。 要修改Cache-Control头中max-age(参见RFC 2616 section 14.9)项之外的内容,你还可以使用Header指令。
Alternate(交替/轮流) Interval(间隔) Syntax(语法)
ExpiresDefault "<base> [plus] {<num> <type>}*"
其中<base>是下列之一:
有效期可以通过增加"<num> <type>"子句进一步调整: 注意,如果你使用基于最后修改日期的设置,"Expires:"头将不会被添加到那些并非来自于磁盘文件的内容。这是因为这些内容并不存在"最后修改时间"的属性。
ExpiresActive 指令 这个指令对其作用范围内的文档启用或禁用产生Expires和Cache-Control头的功能。若设置为 Off 则不会为其作用范围内的任何文档生成Expires和Cache-Control头(除非被更低一层的规则改写,比如.htaccess文件)。若设置为 On 则会按照ExpiresByType和ExpiresDefault指令定义的标准为其作用范围内的文档生成Expires和Cache-Control头。 注意,这个指令并不保证Expires或Cache-Control头一定会产生。如果定义的标准不规范,将不会产生这两个头,其效果是好像从未设置过这个指令一样。
ExpiresByType 指令 这个指令定义了为指定MIME类型的文档(如text/html)生成的Expires头的值和Cache-Control头的max-age指令。seconds参数设置了添加到基准时间以构造有效期限的秒数。Cache-Control: max-age的计算方法是从有效期减去当前请求时间并转化为秒数。 基准时刻可以是源文件的最后修改时刻或者客户端对源文件的访问时刻,至于使用那一个则由<code>指定。"M"表示源文件的最后修改时刻,"A"表示客户端对源文件的访问时刻。需要注意的是<code>和seconds之间没有空格。 这两种基准的差别是很微妙的。如果使用"M",所有当前缓存中的文档副本都将在同一时刻过期,这个可能对定期更新的URL(比如位于同一位置的每周通告)很有好处。如果使用"A",则每个客户端所得到的有效期是不一样的,这个可能对那些几乎不更新的图片文件很有好处,特别是对于一组都引用了相同图片的相关文档。
示例: 注意,这个指令只有在"ExpiresActive On"的条件下才有效。它只对指定的MIME类型文档改写由ExpiresDefault指令设置的有效期。 你也可以使用前面讲述的alternate syntax指定有效期的计算方法。
ExpiresDefault 指令 该指令设置了其作用范围内的所有文档的默认有效期的计算方法,它可以被ExpiresByType指令基于MIME类型被改写。详情请参见ExpiresByType指令和那个alternate syntax的描述。 (责任编辑:IT) |