简要介绍 Apache Web 服务器如何支持缓存控制。
1. 控制Apache的HTTP首部
- Apache Web 服务器提供了几种设置 HTTP 缓存控制首部的机制。其中很多机制在默认情况下都没有启动。
- 某些 Apache 特性的简述:
- mod_headers:
通过 mod_headers 模块可以对单独的首部进行设置。装载了这个模块,就可以用设置单个 HTTP 首部的指令来扩充 Apache 的配置文件了。还可以将这些设置与 Apache 的常用表达式以及过滤器结合在一起使用,将这些首部与个别内容关联起来。这里有一个配置实例,这个例子将某目录下所有的 HTML 文件都标识为非缓存的:
<Files *.html>
Header set Cache-control no-cache
</Files>
- mod_expires:
mod_expires 模块提供的程序逻辑可以自动生成带有正确过期日期的 Expires 首部。通过这个模块,就可以将文档的过期日期设置为对其最后一次被访问之后或者其最近修改日期之后的某一时间段。通过这个模块可以为不同的文件类型设置不同的过期日期,还可以使用便捷的详尽描述信息来描述其缓存能力,比如“access plus 1 month(自访问之后起 1 个月)”。这里有几个例子:
ExpiresDefault A3600
ExpiresDefault M86400
ExpiresDefault "access plus 1 week"
ExpiresByType text/html "modification plus 2 days 6 hours 12 minutes"
- mod_cern_meta
通过 mod_cern_meta 模块可以将一个包含 HTTP 首部的文件与特定的对象联系起来。启动这个模块时,就创建了一组“元文件”,每个需要控制的文档一个,而且还会为每个元文件添加所期望的首部。
- mod_headers:
2. 通过HTTP-EQUIV控制HTML缓存
- HTTP 服务器响应首部用于回送文档的到期信息以及缓存控制信息。Web 服务器与配置文件进行交互,为所提供的文档分配正确的 Cache-Control 首部。
- HTML2.0 定义了
<META HTTP-EQUIV>
标签。这个可选的标签位于 HTML 文档的顶部,定义了应该与文档有所关联的 HTTP 首部。
<!--<meta http-equiv> 标签设置的例子,它将 HTML 文档标记为非缓冲的-->
<html>
<head>
<title>My Document</title>
<meta http-equiv="Cache-control" content="no-cache">
</head>
...
- 最初,HTTP-EQUIV 标签是给 Web 服务器使用的。如 HTML RFC 1866 所述,Web 服务器应该为 HTML 解析
<META HTTP-EQUIV>
标签,并将规定的首部插入 HTTP 响应中. - 但是,支持这个可选特性会增加服务器的额外负载,这些值也只是静态的,而且它只支持HTML,不支持很多其他的文件类型,所以很少有 Web 服务器和代理支持此特性。
- 总之,
<META HTTP-EQUIV>
标签并不是控制文档缓存特性的好方法。通过配置正确的服务器发出 HTTP 首部,是传送文档缓存控制请求的唯一可靠的方法。