On this page
Apache 模块 mod_expires
Description: | 根据用户指定的标准生成Expires 和Cache-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指令。
当Expires
Headers 已经是服务器生成的响应的一部分时,例如,当由 CGI 脚本生成或由原始服务器代理时,此模块不会更改或添加Expires
或Cache-Control
Headers。
备用间隔语法
ExpiresDefault和ExpiresByType伪指令也可以采用以下形式的可读性更高的语法进行定义:
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 |
该指令启用或禁用有关文档领域的Expires
和Cache-Control
Headers 的生成。 (例如,如果在.htaccess
文件中找到,则仅适用于从该目录生成的文档.)如果设置为Off
,则不会为领域中的任何文档生成 Headers(除非在较低级别被覆盖,例如覆盖服务器配置文件的.htaccess
文件)。如果设置为On
,则标题将根据ExpiresByType和ExpiresDefault指令(* q.v. *)定义的标准添加到提供的文档中。
请注意,此伪指令不能保证将生成Expires
或Cache-Control
Headers。如果不符合条件,则不会发送任何 Headers,其效果就好像没有指定此指令一样。
ExpiresByType Directive
Description: | MIME 类型配置的Expires Headers 的值 |
---|---|
Syntax: | ExpiresByType MIME-type <code>seconds |
Context: | 服务器配置,虚拟主机,目录,.htaccess |
Override: | Indexes |
Status: | Extension |
Module: | mod_expires |
此伪指令定义为指定类型(* e.g. *,text/html
)的文档生成的_Headers 的值和Cache-Control
Headers 的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描述的详细信息,请参见该指令的描述。