HTTP 文档提供了其他协议的文档所不具备的高速缓存特性。不过,通过适当设置和配置高速缓存,可以确保 Proxy Server 有效地高速缓存 HTTP、FTP 和 Gopher 文档。
Proxy Server 4 不支持对 HTTPS 文档进行高速缓存。
所有 HTTP 文档都有一个描述性标头部分,Proxy Server 使用它来比较和评估代理服务器高速缓存中的文档与远程服务器上的文档。代理服务器对 HTTP 文档执行最新版本检查时,如果高速缓存中文档的版本已过期,代理服务器将向服务器发送一个请求,告知服务器返回文档。上一次请求后文档往往并没有发生变化,因此将不会传送文档。这种检查 HTTP 文档是否为最新的方法节约了带宽并缩短了时延。
为减少与远程服务器间的事务,可以使用 Proxy Server 为 HTTP 文档设置 "Cache Expiration" 设置。"Cache Expiration" 设置为代理服务器提供相关信息,以便评估在向服务器发送请求之前是否需要对 HTTP 文档进行最新性检查。代理服务器根据在标头中找到的 HTTP 文档上次修改日期进行此评估。
对于 HTTP 文档,还可以使用 "Cache Refresh" 设置。此选项指定代理服务器是始终执行最新性检查(这会覆盖失效期设置),还是等待特定时间段后再进行检查。下表显示了同时指定失效期设置和刷新设置时,代理服务器将执行的操作。使用刷新设置可显著缩短等待时间并节约带宽。
表 12–1 对 HTTP 使用 "Cache Expiration" 和 "Cache Refresh" 设置
刷新设置 |
失效期设置 |
结果 |
---|---|---|
始终执行最新性检查 |
(不适用) |
始终执行最新性检查 |
用户指定的时间间隔 |
使用文档的“到期”标头 |
时间间隔到期时执行最新性检查 |
使用文档的上次修改标头进行估计 |
估计值和到期标头中的较小值* |
* 对于变化频繁的文档,使用较小值可以防止从高速缓存中获取过时数据。
如果您决定要让 Proxy Server 对 HTTP 文档进行高速缓存,请确定它应始终对高速缓存中的文档执行最新性检查,还是应基于 "Cache Refresh" 设置(最新性检查时间间隔)进行检查。例如,对于 HTTP 文档,合理的刷新间隔为四到八小时。刷新间隔越长,代理服务器与远程服务器的连接次数就越少。即使在刷新间隔期间代理服务器不执行最新性检查,用户也可以通过在客户机中单击 "Reload" 按钮来强制刷新。此操作使代理服务器强制对远程服务器执行最新性检查。
可以在 "Set Cache Specifics" 页面或 "Set Caching Configuration" 页面中为 HTTP 文档设置刷新间隔。通过 "Set Cache Specifics" 页面可以配置全局高速缓存过程,而通过 "Set Caching Configuration" 页面可以控制特定 URL 和资源的高速缓存过程。
还可以将服务器设置为只使用上次修改因子或显式失效期信息来检查高速缓存的文档是否是最新的。
显式失效期信息是某些 HTTP 文档中的标头,用来指定文件过期的日期和时间。使用显式到期标头的 HTTP 文档并不很多,因此应根据上次修改标头进行估计。
如果决定根据上次修改标头对 HTTP 文档进行高速缓存,需要选择一个小数用于失效期估计。该小数(称为 LM 因子)将与上次修改时间和上次对文档执行最新性检查时间之间的间隔相乘,然后将生成的数值与上次执行最新性检查到现在为止的时间进行比较。如果此数值小于这段时间间隔,则表明文档尚未过期。小数越小,将会使代理服务器更为频繁地检查文档。
例如,假设有一个文档,其上次更改时间是十天以前。如果将上次修改因子设置为 0.1,代理服务器将把该因子理解为文档可能会在一天 (10 * 0.1 = 1) 内保持不变。在这种情况下,如果不到一天前对文档进行了检查,代理服务器将返回高速缓存中的文档。
仍使用本示例,如果将 HTTP 文档的高速缓存刷新设置的值设置为不足一天,代理服务器每天将进行不止一次的最新性检查。代理服务器将始终使用要求更频繁地执行更新的那个值(高速缓存刷新或高速缓存失效期)。
可以在 "Set Cache Specifics" 页面或 "Set Caching Configuration" 页面中设置 HTTP 文档的失效期设置。通过 "Set Cache Specifics" 页面可以配置全局高速缓存过程,而通过 "Set Caching Configuration" 页面可以控制特定 URL 和资源的高速缓存过程。
Sun Java System Web Proxy Server 对文档进行高速缓存后,再次刷新文档前文档可能已被访问许多次。对于远程服务器而言,向代理服务器发送将要由其进行高速缓存的一个副本只代表一次访问(或称“命中”)。Proxy Server 可以对最新性检查间隔期间访问代理服务器高速缓存中给定文档的次数进行计数,然后在下次刷新文档时通过另一个 HTTP 请求标头 (Cache-Info) 将该命中计数回传给远程服务器。这样一来,如果将远程服务器配置为可以识别该类型标头,就可以收到更准确的文档访问次数报告。