Apache 模块 mod_expires

Description:根据用户指定的标准生成ExpiresCache-Control HTTP Headers
Status:Extension
Module Identifier:expires_module
Source File:mod_expires.c

Summary

此模块控制服务器响应中Expires HTTP Headers 和Cache-Control HTTP Headers 的max-age伪指令的设置。到期日期可以设置为相对于上次修改源文件的时间,还是相对于 Client 端访问的时间。

这些 HTTP Headers 是对 Client 端的有关文档有效性和持久性的指令。如果已缓存,则可以从缓存中而不是从源中获取文档,直到该时间过去为止。之后,缓存副本被视为“过期”且无效,并且必须从源中获取新副本。

要修改max-age以外的Cache-Control指令(请参见RFC 2616 第 14.9 节),可以使用Header指令。

ExpiresHeaders 已经是服务器生成的响应的一部分时,例如,当由 CGI 脚本生成或由原始服务器代理时,此模块不会更改或添加ExpiresCache-ControlHeaders。

备用间隔语法

ExpiresDefaultExpiresByType伪指令也可以采用以下形式的可读性更高的语法进行定义:

ExpiresDefault "base  [plus num type] [num type] ..."
ExpiresByType type/encoding "base  [plus num type] [num type] ..."

其中 base 是以下之一:

  • access

  • now(相当于“ access”)

  • modification

plus关键字是可选的。 num 应该是整数值[+34+可接受],并且 type 是以下之一:

  • years

  • months

  • weeks

  • days

  • hours

  • minutes

  • seconds

例如,默认情况下,以下任何伪指令可用于使文档在访问后 1 个月后过期:

ExpiresDefault "access plus 1 month"
ExpiresDefault "access plus 4 weeks"
ExpiresDefault "access plus 30 days"

可以通过添加几个'num type'子句来对到期时间进行微调:

ExpiresByType text/html "access plus 1 month 15 days 2 hours"
ExpiresByType image/gif "modification plus 5 hours 3 minutes"

请注意,如果您使用基于修改日期的设置,则 不会 将 Expires Headers 添加到不是来自磁盘文件的内容中。这是因为这样的内容没有修改时间的事实。

ExpiresActive Directive

Description:启用生成Expires个标题
Syntax:ExpiresActive On|Off
Default:ExpiresActive Off
Context:服务器配置,虚拟主机,目录,.htaccess
Override:Indexes
Status:Extension
Module:mod_expires

该指令启用或禁用有关文档领域的ExpiresCache-ControlHeaders 的生成。 (例如,如果在.htaccess文件中找到,则仅适用于从该目录生成的文档.)如果设置为Off,则不会为领域中的任何文档生成 Headers(除非在较低级别被覆盖,例如覆盖服务器配置文件的.htaccess文件)。如果设置为On,则标题将根据ExpiresByTypeExpiresDefault指令(* q.v. *)定义的标准添加到提供的文档中。

请注意,此伪指令不能保证将生成ExpiresCache-ControlHeaders。如果不符合条件,则不会发送任何 Headers,其效果就好像没有指定此指令一样。

ExpiresByType Directive

Description:MIME 类型配置的ExpiresHeaders 的值
Syntax:ExpiresByType MIME-type <code>seconds
Context:服务器配置,虚拟主机,目录,.htaccess
Override:Indexes
Status:Extension
Module:mod_expires

此伪指令定义为指定类型(* e.g. *,text/html)的文档生成的_Headers 的值和Cache-ControlHeaders 的max-age伪指令。第二个参数设置将添加到基准时间以构造到期日期的秒数。 Cache-Control: max-age是通过从到期日期中减去请求时间并以秒表示结果来计算的。

基本时间可以是文件的最后修改时间,也可以是 Client 端访问文档的时间。 <code>字段指定应使用哪一个; M表示应该将文件的最后修改时间用作基准时间,而A表示应该使用 Client 端的访问时间。

效果上的差别是微妙的。如果使用M,则所有高速缓存中文档的所有当前副本将同时到期,这对于每周都在同一 URL 上找到的每周通知等很有用。如果使用A,则每个 Client 端的到期日期都不同;这对于不经常更改的图像文件可能是好的,特别是对于一组全部引用相同图像的相关文档(,即,将在相对较短的时间范围内重复访问这些图像)。

Example:

# enable expirations
ExpiresActive On
# expire GIF images after a month in the client's cache
ExpiresByType image/gif A2592000
# HTML documents are good for a week from the
# time they were changed
ExpiresByType text/html M604800

请注意,只有指定了ExpiresActive On,此伪指令才有效。对于指定的 MIME 类型* only *,它将覆盖ExpiresDefault指令设置的任何到期日期。

您还可以使用alternate syntax来指定到期时间计算,如本文档前面所述。

ExpiresDefault Directive

Description:计算到期时间的默认算法
Syntax:ExpiresDefault <code>seconds
Context:服务器配置,虚拟主机,目录,.htaccess
Override:Indexes
Status:Extension
Module:mod_expires

该指令设置默认算法,用于计算受影响领域中所有文档的到期时间。可以使用ExpiresByType指令逐个覆盖它。有关自变量语法以及alternate syntax描述的详细信息,请参见该指令的描述。