Apache HTTP Server 版本 2.4
描述 | 根据用户指定的标准生成 Expires 和 Cache-Control HTTP 头 |
---|---|
状态 | 扩展 |
模块标识符 | expires_module |
源文件 | mod_expires.c |
此模块控制在服务器响应中设置 Expires
HTTP 头和 Cache-Control
HTTP 头的 max-age
指令。过期日期可以设置为相对于源文件上次修改的时间,也可以设置为相对于客户端访问的时间。
这些 HTTP 头是关于文档有效性和持久性的指令。如果被缓存,文档可以在此时间过去之前从缓存中获取,而不是从源获取。在此之后,缓存副本被认为是“过期”和无效的,必须从源获取新的副本。
要修改除 max-age
之外的 Cache-Control
指令(参见 RFC 2616 第 14.9 节),可以使用 Header
指令。
当 Expires
头已经是服务器生成的响应的一部分时,例如由 CGI 脚本生成或从源服务器代理时,此模块不会更改或添加 Expires
或 Cache-Control
头。
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 应该是一个整数(可被 atoi()
接受),而 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 头添加到不来自磁盘文件的內容中。这是因为此类內容没有修改时间。
描述 | 启用生成 Expires 头 |
---|---|
语法 | ExpiresActive On|Off |
默认 | ExpiresActive Off |
上下文 | 服务器配置、虚拟主机、目录、.htaccess |
覆盖 | 索引 |
状态 | 扩展 |
模块 | mod_expires |
此指令启用或禁用为相关文档区域生成 Expires
和 Cache-Control
头。(也就是说,如果在 .htaccess
文件中找到,它只适用于从该目录生成的文档。)如果设置为 Off
,则不会为该区域中的任何文档生成头(除非在较低级别被覆盖,例如 .htaccess
文件覆盖服务器配置文件)。如果设置为 On
,则会根据 ExpiresByType
和 ExpiresDefault
指令(q.v.)定义的标准将头添加到已提供的文档中。
请注意,此指令不能保证会生成 Expires
或 Cache-Control
头。如果标准不满足,则不会发送任何头,效果就好像没有指定此指令一样。
描述 | 通过 MIME 类型配置的 Expires 头的值 |
---|---|
语法 | ExpiresByType MIME-type <code>seconds |
上下文 | 服务器配置、虚拟主机、目录、.htaccess |
覆盖 | 索引 |
状态 | 扩展 |
模块 | mod_expires |
此指令定义为指定类型(例如,text/html
)的文档生成的 Expires
头的值和 Cache-Control
头的 max-age
指令。第二个参数设置将添加到基本时间以构建过期日期的秒数。Cache-Control: max-age
是通过从过期日期减去请求时间并以秒为单位表示结果来计算的。
基本时间是文件的最后修改时间,或客户端访问文档的时间。<code>
字段指定了应该使用哪个;M
表示应使用文件的最后修改时间作为基本时间,而 A
表示应使用客户端的访问时间。
效果上的差异很细微。如果使用 M
,则所有缓存中所有文档的当前副本将在同一时间过期,这对于始终在同一 URL 找到的每周通知等内容来说可能很好。如果使用 A
,则每个客户端的过期日期都不同;这对于不太常更改的图像文件来说可能很好,特别是对于一组所有引用相同图像的相关文档(即,图像将在相对较短的时间内重复访问)。
# 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 类型覆盖 ExpiresDefault
指令设置的任何过期日期。
您还可以使用本文档前面描述的 备用语法 来指定过期时间计算。
描述 | 计算过期时间的默认算法 |
---|---|
语法 | ExpiresDefault <code>seconds |
上下文 | 服务器配置、虚拟主机、目录、.htaccess |
覆盖 | 索引 |
状态 | 扩展 |
模块 | mod_expires |
此指令设置受影响区域中所有文档的过期时间计算的默认算法。它可以通过 ExpiresByType
指令在逐类型基础上被覆盖。有关参数语法的详细信息,请参见该指令的描述,以及 备用语法 描述。