Sun Java System Web Proxy Server 4.0.8 管理指南

第 12 章 高速缓存

本章介绍了 Sun Java System Web Proxy Server 如何对文档进行高速缓存,还介绍了如何使用联机页面来配置高速缓存。

本章包含以下各节:

高速缓存的工作原理

对于使用代理服务器访问远程服务器而不是直接访问远程服务器的客户机,高速缓存降低了网络通信流量并缩短了响应时间。

客户机向代理服务器请求 Web 页或文档时,代理服务器会将文档从远程服务器复制到其本地高速缓存目录结构中,同时会将该文档发送给客户机。

如果客户机请求的是以前请求过并已复制到代理服务器高速缓存中的文档,代理服务器将从高速缓存返回文档,而不是再次从远程服务器检索该文档,如下图所示。如果代理服务器确定文件不是最新的,则代理服务器将从远程服务器刷新该文档并更新其高速缓存,然后再将文档发送到客户机。

图 12–1 代理服务器文档检索

该图显示了请求文档的客户机以及从高速缓存发送文档的代理服务器

高速缓存中的文件由 Sun Java System Web Proxy Server 垃圾收集实用程序 (CacheGC) 自动进行维护。CacheGC 会定期自动清理高速缓存,以确保高速缓存不会混乱地堆积过时的文档。

了解高速缓存结构

高速缓存由一个或多个分区组成。从概念上讲,分区是指磁盘上留作高速缓存之用的存储区域。如果想要让高速缓存跨越若干个磁盘,请至少为每个磁盘配置一个高速缓存分区。可以单独管理各个分区。也就是说,您可以独立于其他所有分区来启用、禁用和配置某个分区。

在一个位置存储大量高速缓存的文件会降低性能,因此,请在每个分区中创建若干个目录或段。段是高速缓存结构中仅次于分区的下一个级别。高速缓存跨所有分区最多可以有 256 个段。高速缓存段的数量必须为 2 的幂(例如,1、2、4、8、16、...、256)。

高速缓存分层结构中的最低级别是子段。子段是指段内的目录。每个段有 64 个子段。高速缓存的文件存储在子段,即高速缓存的最低级别中。

下图显示了一个含有分区和段的高速缓存结构示例。在此图中,高速缓存目录结构将整个高速缓存划分为三个分区。第一个分区包含四个高速缓存段,后两个分区各包含两个段。

每个高速缓存段的表示方法是:以 "s" 代表段,其后是段号。对于显示为 s3.4 的段,3 表示高速缓存段数 (23 = 8) 中 2 的幂次,4 表示段号(共 8 个段,分别标记为 0 到 7)。因此,s3.4 代表 8 个段中的第 5 个段。

图 12–2 高速缓存结构示例

该图显示了一个高速缓存目录示例,其中,整个高速缓存划分为三个分区。

高速缓存中的文件分布

Proxy Server 使用特定算法来确定应将文档存储在哪个目录。该算法可以确保在各个目录中均匀分布文档。均匀分布很重要,因为包含大量文档的目录容易引发性能问题。

Proxy Server 使用 RSA MD5(Message Digest 5,消息摘要 5)算法将 URL 简化为 16 字节的二进制数据,并使用该数据的 8 个字节来计算在高速缓存中存储文档时使用的 16 个字符的十六进制文件名。

设置高速缓存细节

通过设置高速缓存细节,您可以启用高速缓存并控制 Proxy Server 将要缓存哪些类型的协议。高速缓存细节包括以下各项:


注 –

设置大型高速缓存的细节很耗时,并且可能会导致管理界面超时。因此,如果您要创建大型高速缓存,请使用命令行实用程序来设置高速缓存细节。有关高速缓存命令行实用程序的更多信息,请参见使用高速缓存命令行界面


Procedure设置高速缓存细节

  1. 访问 Server Manager,然后单击 "Caching" 选项卡。

  2. 单击 "Set Cache Specifics" 链接。

    将会显示 "Set Cache Specifics" 页面。

  3. 通过选择相应的选项,可以启用或禁用高速缓存。

    默认情况下,将启用高速缓存。

  4. 提供工作目录。

    默认情况下,工作目录位于服务器实例下。此位置可以更改。有关更多信息,请参见创建高速缓存工作目录

  5. 单击分区配置链接。

    将会显示 "Add/Edit Cache Partitions" 页面。您可以添加新的高速缓存分区或编辑现有高速缓存分区。高速缓存大小是指允许高速缓存增长到的最大大小。高速缓存的最大大小为 32 GB。有关更多信息,请参见设置高速缓存大小

  6. 单击高速缓存容量配置链接。

    将会显示 "Set Cache Capacity" 页面。您可以在 "Set Cache Capacity" 页面上设置高速缓存容量。

  7. 选择 "Cache HTTP" 以启用对 HTTP 文档的高速缓存。

    如果决定要让代理服务器对 HTTP 文档进行高速缓存,请确定它应始终对高速缓存中的文档进行最新性检查,还是应按某一时间间隔进行检查。还可以启用或禁用 Proxy Server 向远程服务器报告高速缓存命中次数。有关更多信息,请参见高速缓存 HTTP 文档。可用选项包括:

    • 选择 "Always Check That The Document Is Up To Date" 选项可以确保 HTTP 文档总是最新的。

      • 从 "Check Only If Last Check More Than" 下拉式列表中选择小时数,可以指定代理服务器的刷新间隔。可使用以下任一选项执行最新性检查:

        • Use Last-modified Factor。它是由原始服务器随文档一同发送的上次修改标头。

        • Use Only Explicit Expiration Information。代理服务器使用到期标头来确定高速缓存条目是新条目还是过期条目。

        选择 "Never Report Accesses To Remote Server" 选项可防止代理服务器向远程服务器报告访问次数。

      • 选择 "Report Cache Hits To Remote Server" 选项可跟踪文档的访问次数并将其报告回给远程服务器。

  8. 可以设置高速缓存的 FTP 文档的刷新间隔。选中 "Yes; Reload If Older Than" 复选框,并从下拉式列表中选择相应的值来设置时间间隔。有关更多信息,请参见高速缓存 FTP 和 Gopher 文档

  9. 可以设置高速缓存的 Gopher 文档的刷新间隔。选中 "Yes; Reload If Older Than" 复选框,并从下拉式列表中选择相应的值来设置时间间隔。有关更多信息,请参见高速缓存 FTP 和 Gopher 文档

  10. 单击 "OK"。

  11. 单击 "Restart required"。将会显示 "Apply Changes" 页面。

  12. 单击 "Restart Proxy Server" 按钮以应用更改。

创建高速缓存工作目录

高速缓存文件位于高速缓存分区下。在 "Set Cache Specifics" 页面中指定的工作目录通常是高速缓存的父目录。所有高速缓存的文件均以有组织的目录结构形式出现在高速缓存目录下。如果更改高速缓存目录名称或将其移动到其他位置,必须为代理服务器提供新位置。

可以将高速缓存目录结构扩展至多个文件系统,这样便可使一个大的高速缓存结构分布在多个较小的磁盘上,而不用将其全部存放在一个大的磁盘中。每个代理服务器均须拥有各自的高速缓存目录结构,也就是说,多个代理服务器不能同时共享高速缓存目录。

设置高速缓存大小

高速缓存大小指示分区大小。高速缓存大小应始终小于高速缓存容量,因为它是高速缓存可以增长到的最大大小。所有分区大小的总和必须小于或者等于高速缓存大小。

可供代理服务器高速缓存使用的磁盘空间量对高速缓存性能具有相当大的影响。如果高速缓存过小,Cache GC 必须更频繁地删除高速缓存的文档以腾出磁盘空间,还必须更频繁地从内容服务器检索文档。这些活动会降低性能。

高速缓存大小较大时效率会更高,因为高速缓存的文档越多,网络通信流量负载就越小,代理服务器提供的响应速度就越快。此外,如果用户不再需要高速缓存的文档,GC 会将它们删除。除非文件系统有限制,否则,高速缓存大小再大也不过分。过剩的空间只不过保持未使用而已。

还可以将高速缓存分割到多个磁盘分区中。

高速缓存 HTTP 文档

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" 设置

刷新设置 

失效期设置 

结果 

始终执行最新性检查 

(不适用) 

始终执行最新性检查 

用户指定的时间间隔 

使用文档的“到期”标头 

时间间隔到期时执行最新性检查 

 

使用文档的上次修改标头进行估计 

估计值和到期标头中的较小值* 


注 –

* 对于变化频繁的文档,使用较小值可以防止从高速缓存中获取过时数据。


设置 HTTP 高速缓存刷新间隔

如果您决定要让 Proxy Server 对 HTTP 文档进行高速缓存,请确定它应始终对高速缓存中的文档执行最新性检查,还是应基于 "Cache Refresh" 设置(最新性检查时间间隔)进行检查。例如,对于 HTTP 文档,合理的刷新间隔为四到八小时。刷新间隔越长,代理服务器与远程服务器的连接次数就越少。即使在刷新间隔期间代理服务器不执行最新性检查,用户也可以通过在客户机中单击 "Reload" 按钮来强制刷新。此操作使代理服务器强制对远程服务器执行最新性检查。

可以在 "Set Cache Specifics" 页面或 "Set Caching Configuration" 页面中为 HTTP 文档设置刷新间隔。通过 "Set Cache Specifics" 页面可以配置全局高速缓存过程,而通过 "Set Caching Configuration" 页面可以控制特定 URL 和资源的高速缓存过程。

设置 HTTP 高速缓存失效期策略

还可以将服务器设置为只使用上次修改因子或显式失效期信息来检查高速缓存的文档是否是最新的。

显式失效期信息是某些 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 和资源的高速缓存过程。

向远程服务器报告 HTTP 访问情况

Sun Java System Web Proxy Server 对文档进行高速缓存后,再次刷新文档前文档可能已被访问许多次。对于远程服务器而言,向代理服务器发送将要由其进行高速缓存的一个副本只代表一次访问(或称“命中”)。Proxy Server 可以对最新性检查间隔期间访问代理服务器高速缓存中给定文档的次数进行计数,然后在下次刷新文档时通过另一个 HTTP 请求标头 (Cache-Info) 将该命中计数回传给远程服务器。这样一来,如果将远程服务器配置为可以识别该类型标头,就可以收到更准确的文档访问次数报告。

高速缓存 FTP 和 Gopher 文档

FTP 和 Gopher 不包含用于检查文档最新性的方法。因此,优化 FTP 和 Gopher 文档高速缓存的唯一方法是设置高速缓存刷新间隔。高速缓存刷新间隔是指 Proxy Server 从远程服务器检索文档最新版本前等待的时间长度。如果不设置高速缓存刷新间隔,即使高速缓存中的文档版本是最新的,代理服务器也将检索这些文档。

如果要设置 FTP 和 Gopher 高速缓存刷新间隔,请选择一个自认为对代理服务器获取的文档安全的时间间隔。例如,如果存储很少发生变化的信息,请使用较大的值(若干天)。如果数据不断变化,您会希望至少每隔几小时就检索一次文件。刷新期间存在着将过期文件发送给客户机的风险。如果该时间间隔足够短(例如,几个小时),则会在显著提高响应速度的同时,也会消除大部分此类风险。

可以在 "Set Cache Specifics" 页面或 "Set Caching Configuration" 页面中设置 FTP 和 Gopher 文档的高速缓存刷新间隔。通过 "Set Cache Specifics" 页面可以配置全局高速缓存过程,而通过 "Set Caching Configuration" 页面可以控制特定 URL 和资源的高速缓存过程。有关使用 "Set Cache Specifics" 页面的更多信息,请参见设置高速缓存细节。有关使用 "Set Caching Configuration" 页面的更多信息,请参见配置高速缓存


注 –

如果 FTP 和 Gopher 文档差异很大(有些经常发生变化,有些则很少发生变化),请使用 "Set Caching Configuration" 页面为每种文档创建单独的模板(例如,创建包含资源 ftp://.*.gif 的模板),然后设置适合该资源的刷新间隔。


创建和修改高速缓存

高速缓存分区是指留待高速缓存之用的磁盘或内存的预留部分。如果高速缓存容量发生变化,则可能需要更改或添加分区。

Procedure添加高速缓存分区

  1. 访问 Server Manager,然后单击 "Caching" 选项卡。

  2. 单击 "Add/Edit Cache Partitions" 链接。

    将会显示 "Add/Edit Cache Partitions" 页面。

  3. 单击 "Add Cache Partition" 按钮。

    将会显示 "Cache Partition Configuration" 页面。

  4. 为新分区提供适当的值。

  5. 单击 "OK"。

  6. 单击 "Restart required"。

    将会显示 "Apply Changes" 页面。

  7. 单击 "Restart Proxy Server" 按钮以应用更改。

Procedure修改高速缓存分区

  1. 访问 Server Manager,然后单击 "Caching" 选项卡。

  2. 单击 "Add/Edit Cache Partitions" 链接。

    将会显示 "Add/Edit Cache Partitions" 页面。

  3. 单击要更改的分区的名称。

  4. 编辑信息。

  5. 单击 "OK"。

  6. 单击 "Restart required"。

    将会显示 "Apply Changes" 页面。

  7. 单击 "Restart Proxy Server" 按钮以应用更改。

设置高速缓存容量

高速缓存容量值用于导出高速缓存目录结构。高速缓存目录中的最大段数是根据高速缓存容量导出的。高速缓存容量与高速缓存目录中的高速缓存分层结构直接相关。容量越大,分层结构就越大。高速缓存容量应大于或等于高速缓存大小。如果已知自己打算在以后增加高速缓存大小(例如,通过添加外部磁盘的方式),则将容量设置为大于高速缓存大小可能会有所帮助。高速缓存容量最大可达 32 GB,将会创建 256 个段。

Procedure设置高速缓存容量

  1. 访问 Server Manager,然后单击 "Caching" 选项卡。

  2. 单击 "Set Cache Capacity" 链接。

    将会显示 "Set Cache Capacity" 页面。

  3. 从 "New Capacity Range" 下拉式列表中选择容量。

  4. 单击 "OK"。

  5. 单击 "Restart required"。

    将会显示 "Apply Changes" 页面。

  6. 单击 "Restart Proxy Server" 按钮以应用更改。

管理高速缓存段

代理服务器高速缓存被分为一个或多个高速缓存段。最多可以有 256 个段。高速缓存段数必须是 2 的乘方(例如,1、2、4、8、16、...、256)。最大容量为 32 GB(最优),具有 256 个高速缓存段。

如果选用容量为 500 MB 的高速缓存,安装程序将创建 4 个高速缓存段 (500 d6 125 = 4);如果选择容量为 2 GB 的高速缓存,安装程序将创建 16 个段 (2000 d6 125 = 16)。为便于获得段数,选择 125 MB 作为每个段的最优值。段数越多,存储和分布的 URL 数就越大。

Procedure管理高速缓存段

  1. 访问 Server Manager,然后单击 "Caching" 选项卡。

  2. 单击 "Manage Sections" 链接。

    将会显示 "Manage Sections" 页面。

  3. 更改表中的信息。

    可以在现有分区之间移动段。

  4. 单击 "OK"。

  5. 单击 "Restart required"。

    将会显示 "Apply Changes" 页面。

  6. 单击 "Restart Proxy Server" 按钮以应用更改。

设置垃圾收集首选项

可以使用高速缓存垃圾收集器来删除高速缓存中的文件。可以在自动模式或显式模式下进行垃圾收集。显式模式由管理员在外部进行调度。选择其中一种模式,然后单击 "OK"。单击 "Restart required"。将会显示 "Apply Changes" 页面。单击 "Restart Proxy Server" 按钮以应用更改。

调度垃圾收集

可以通过 "Schedule Garbage Collection" 页面指定进行垃圾收集的日期和时间。

Procedure设置垃圾收集

  1. 访问 Server Manager,然后单击 "Caching" 选项卡。

  2. 单击 "Schedule Garbage Collection" 链接。

    将会显示 "Schedule Garbage Collection"。

  3. 从 "Schedule Garbage Collection At" 列表中选择进行垃圾收集的时间。

  4. 指定在星期几进行垃圾收集。

  5. 单击 "OK"。

  6. 单击 "Restart required"。

    将会显示 "Apply Changes" 页面。

  7. 单击 "Restart Proxy Server" 按钮以应用更改。

配置高速缓存

可以为与您指定的正则表达式模式匹配的 URL 指定若干个配置参数值。此功能使您能够基于高速缓存的文档类型对代理服务器高速缓存进行精细控制。配置高速缓存时可能需要确定以下各项:


注 –

如果将某个特定资源的高速缓存默认值设置为 "Derived configuration" 或 "Don’t cache",则 "Set Caching Configuration" 页面中不会显示高速缓存配置选项。不过,如果为某个资源选择了高速缓存默认值 "Cache",则可以指定若干个其他配置项。


Procedure配置高速缓存

  1. 访问 Server Manager,然后单击 "Caching" 选项卡。

  2. 单击 "Set Caching Configuration" 页面。

    将会显示 "Set Caching Configuration" 页面。

  3. 从下拉式列表中选择资源,或单击 "Regular Expression" 按钮,键入正则表达式,然后单击 "OK"。

  4. 更改配置信息。

  5. 单击 "OK"。

  6. 单击 "Restart required"。

    将会显示 "Apply Changes" 页面。

  7. 单击 "Restart Proxy Server" 按钮以应用更改。

高速缓存配置元素

以下各节包含的信息将帮助您确定最适合需要的配置。

设置高速缓存默认值

可以通过代理服务器来确定特定资源的高速缓存默认值。资源是指符合所指定的某种条件的文件类型。例如,要让服务器自动高速缓存域 company.com 中的所有文档,可以创建以下正则表达式

[a-z] *://[^/:]\\.company\\.com.*

默认情况下会选中 "Cache" 选项。服务器会自动高速缓存来自该域的所有可高速缓存的文档。


注 –

如果将某个特定资源的高速缓存默认值设置为 "Derived configuration" 或 "Don’t cache" ,则不必为该资源配置高速缓存。不过,如果为某个资源选择了高速缓存默认值 "Cache",则可以指定若干个其他配置项。有关这些项的列表,请参见配置高速缓存


也可以设置 HTTP、FTP 和 Gopher 的高速缓存默认值。

高速缓存要求进行验证的页面

可以让服务器高速缓存要求进行用户验证的文件。Proxy Server 可对高速缓存中的文件进行标记,以便它可以在用户请求这些文件时要求从远程服务器进行验证。

因为 Proxy Server 无法确定远程服务器如何进行验证,而且它没有用户 ID 或密码列表,所以它只会在每次收到对要求进行验证的文档的请求时,强制对远程服务器进行最新性检查。因此,用户必须键入 ID 和密码以获得对文件的访问权限。如果用户先前已在浏览器会话中访问过该服务器,则浏览器会自动发送验证信息,而不提示用户。

如果不启用对要求进行验证的页面进行高速缓存,代理服务器将不会高速缓存这些页面(这是默认行为)。

高速缓存查询

高速缓存的查询仅适用于 HTTP 文档。您可以限制高速缓存的查询的长度,也可以完全禁止对查询的高速缓存。查询越长,其重复的可能性越小,对其进行高速缓存所起的作用也就越小。

查询受以下高速缓存限制的制约:

设置最小和最大高速缓存文件大小

可以为 Proxy Server 高速缓存的文件设置最小和最大大小。如果网络连接速度快,则可能需要设置最小大小。如果连接速度快,检索小文件的速度可能快到已没有必要让服务器对它们进行高速缓存。在这种情况下,您可能只需高速缓存较大的文件。您可能需要设置最大文件大小,以确保大文件不会过多占用代理服务器的磁盘空间。

设置最新性检查策略

最新性检查策略可以确保 HTTP 文档始终是最新的。还可以指定 Proxy Server 的刷新间隔。

设置失效期策略

可以使用上次修改因子或显式失效期信息来设置失效期策略。

设置客户机中断的高速缓存行为

如果在仅检索了部分文档时客户机中断了数据传送,代理服务器能够出于高速缓存目的完成对文档的检索。如果已至少检索到文档的 25%,则默认情况下代理服务器会出于高速缓存目的完成对文档的检索。否则,代理服务器将终止远程服务器连接并删除不完整的文件。可以增大或减小客户机中断百分比。

连接服务器失败时的行为

如果由于原始服务器不可访问而导致对某个过时文档的最新性检查失败,可以指定代理服务器是否发送高速缓存中的过时文档。

高速缓存本地主机

如果从本地主机请求的 URL 缺少域名,Proxy Server 将不会对其进行高速缓存。此行为避免了重复高速缓存。例如,如果用户从本地服务器请求了 http://machine/filename.htmlhttp://machine.example.com/filename.html,则这两个 URL 可能都会出现在高速缓存中。由于这些文件来自本地服务器,因此对它们的检索速度可能很快,从而没有必要高速缓存它们。

不过,如果公司在许多远程位置都有服务器,可能需要高速缓存来自所有主机的文档,以减少网络通信流量和缩短访问这些文件所需的时间。

Procedure启用对本地主机的高速缓存

  1. 访问 Server Manager,然后单击 "Caching" 选项卡。

  2. 单击 "Cache Local Hosts" 链接。

    将会显示 "Cache Local Hosts" 页面。

  3. 从下拉式列表中选择资源,或单击 "Regular Expression" 按钮,键入正则表达式,然后单击 "OK"。

    有关正则表达式的更多信息,请参见第 16 章

  4. 单击 "enabled" 按钮。

  5. 单击 "OK"。

  6. 单击 "Restart required"。

    将会显示 "Apply Changes" 页面。

  7. 单击 "Restart Proxy Server" 按钮以应用更改。

配置文件高速缓存

默认情况下,启用文件高速缓存。文件高速缓存设置包含在 server.xml 文件中。可以使用 Server Manager 更改文件高速缓存设置。


注 –

用户界面中显示有 "Configure File Cache" 页面,但在本 Proxy Server 4 发行版并未实现该功能


Procedure配置文件高速缓存

  1. 在 Server Manager 中,单击 "Caching" 选项卡。

  2. 单击 "File Cache Configuration" 链接。

    将会显示 "File Cache Configuration" 页面。

  3. 选择 "Enable File Cache"(如果尚未选择)。

  4. 选择是否传送文件。

    启用 "Transmit File" 后,服务器将在文件高速缓存中高速缓存文件的已打开文件描述符,而不是文件内容。PR_TransmitFile 用于将文件内容发送到客户机。启用 "Transmit File" 后,通常由文件高速缓存进行的对大、中、小文件的区分便不再适用,因为只会对打开的文件描述符进行高速缓存。默认情况下,在 Windows 中启用 "Transmit File",而在 UNIX 中则将其禁用。在 UNIX 中,应该只为对 PR_TransmitFile 具有本机 OS 支持的平台启用 "Transmit File",此类平台目前包括 HP-UX 和 AIX。建议不要在 UNIX/Linux 平台上使用此选项。

  5. 键入散列表的大小。

    默认大小为最大文件数的两倍加 1。例如,如果最大文件数设置为 1024,则默认的散列表大小为 2049。

  6. 键入有效高速缓存条目的最长生存期(以秒为单位)。

    默认设置为 30。此设置用于控制高速缓存文件后,可以继续使用高速缓存的信息的时间长度。存在时间久于 MaxAge 的条目将由同一文件的新条目替换(如果在高速缓存中引用同一文件)。请根据内容是否会定期更新来设置最长生存期。例如,如果内容一天定期更新四次,您可以将最长生存期设置为 21600 秒(6 小时)。否则,可考虑将最长生存期设置为修改文件之后希望处理以前版本的内容文件的最长时间。

  7. 键入要高速缓存的最大文件数。

    默认设置为 1024。

  8. 键入中等和小文件大小限制(以字节为单位)。

    默认情况下,将 "Medium File Size Limit" 设置为 537600,将 "Small File Size Limit" 设置为 2048。

    高速缓存对小文件、中等文件和大文件的处理方法不同。中等文件的内容通过将文件映射到虚拟内存(仅限于 UNIX/Linux 平台)来进行高速缓存。小文件的内容通过分配堆空间并将文件读入其中来进行高速缓存。尽管会对大文件的相关信息进行高速缓存,但不会对大文件的内容进行高速缓存。区别对待小文件和中等文件的好处是,当有大量小文件时,可以避免浪费虚拟内存的许多页面的一部分。因此,"Small File Size Limit" 的值通常比 VM 页面大小略低。

  9. 设置中等和小文件空间。

    中等文件空间是指用于映射所有中等大小文件的虚拟内存的大小(以字节为单位)。默认情况下,将此大小设置为 10485760。小文件空间是指用于高速缓存的堆空间(包括用于高速缓存小文件的堆空间)的大小(以字节为单位)。对于 UNIX/Linux,默认情况下将此大小设置为 1048576。

  10. 单击 "OK"。

  11. 单击 "Restart required"。

    将会显示 "Apply Changes" 页面。

  12. 单击 "Restart Proxy Server" 按钮以应用更改。

查看 URL 数据库

您可以查看所有已记录并按照访问协议和站点名称分组的高速缓存 URL 的名称和属性。通过访问此信息,可以执行各种高速缓存管理功能,如废止和删除高速缓存中的文档。

Procedure查看数据库中的 URL

  1. 访问 Server Manager,然后单击 "Caching" 选项卡。

  2. 单击 "View URL Database" 链接。

    将会显示 "View URL Database" 页面。

  3. 单击 "Regenerate" 按钮以生成最新的高速缓存的 URL 列表。

  4. (可选)要查看特定 URL 的信息,请在 "Search" 字段中键入 URL 或正则表达式,然后单击 "Search" 按钮。

  5. 要查看按域名和主机分组的高速缓存数据库信息:

    1. 从列表中选择域名。

      将会显示该域中主机的列表。单击某个主机的名称,将会显示 URL 列表。

    2. 单击某个 URL 的名称。

      将会显示有关该 URL 的详细信息。

    3. 单击某个 URL 的名称以查看有关该 URL 的详细信息。

Procedure废止效或删除高速缓存的 URL

  1. 访问 Server Manager,然后单击 "Caching" 选项卡。

  2. 单击 "View URL Database" 链接。

    将会显示 "View URL Database" 页面。

  3. 单击 "Regenerate" 按钮以生成高速缓存数据库的快照。

    此快照构成了执行其余步骤的基础。

  4. 如果您知道要废止或删除的特定 URL,请在 "Search" 字段中键入该 URL 或与该 URL 匹配的正则表达式,然后单击 "Search" 按钮。

  5. 如果您要处理按域名和主机分组的 URL:

    1. 从列表中选择域名。

      将会显示该域中主机的列表。

    2. 单击某个主机的名称,将会显示 URL 列表。

  6. 要废止单个文件:

    1. 选择这些文件的 URL 旁边的 "Ex" 选项。

    2. 单击 "Exp/Rem Marked" 按钮。

  7. 要废止列表中的所有文件,请单击表单底部的 "Exp All" 按钮。

  8. 要删除高速缓存中的单个文件:

    1. 选择要删除的那些文件的 URL 旁边的 "Rm" 选项。

    2. 单击 "Exp/Rem Marked" 按钮。

  9. 要删除列表中的所有文件,请单击 "Rem All" 按钮。

  10. 单击 "Regenerate" 按钮以重新生成快照。


    注 –

    使用 "Ex" 或 "Rm" 选项时将处理关联的文件,但不会在快照中反映所做更改。需要重新生成快照,才能看到更改。


使用高速缓存批量更新

只要代理服务器不繁忙,您就可以将文件预先装入指定 Web 站点,或对高速缓存中已有的文档进行最新性检查。您可以创建、编辑和删除成批的 URL,还可以启用和禁用批量更新。

创建批量更新

通过指定要进行批量更新的文件,可以主动对文件进行高速缓存。可以对当前位于高速缓存中的若干个文件执行最新版本检查,或预先装入特定 Web 站点的多个文件。

Procedure创建批量更新

  1. 访问 Server Manager,然后单击 "Caching" 选项卡。

  2. 单击 "Set Cache Batch Updates" 链接。

    将会显示 "Set Cache Batch Updates" 页面。

  3. 从 "Create/Select a Batch Update Configuration" 旁边的下拉式列表中选择 "New and Create"。

  4. 单击 "OK"。将会显示 "Set Cache Batch Updates" 页面。

  5. 在 "Name" 部分中,键入新批量更新条目的名称。

  6. 在该页面的 "Source" 部分中,选择要创建的批量更新的类型。

    如果要对高速缓存中的所有文档执行最新性检查,请单击第一个单选按钮。如果要从给定的源 URL 开始以递归方式高速缓存各 URL,请单击第二个单选按钮。

  7. 在 "Source" 部分的字段中,标识要在批量更新中使用的文档。

  8. 在 "Exceptions" 部分中,标识要排除在批量更新之外的任何文件。

  9. 在 "Resources" 部分中,键入最大并发连接数以及要遍历的最大文档数。

  10. 单击 "OK"。

    从 "Create/Select a Batch Update Configuration" 旁边的下拉式列表中,选择新添加的批次名称和日程表。

  11. 单击 "OK"。


    注 –

    您可以在不启用批量更新的情况下创建、编辑和删除批量更新配置。但是,如果您希望按照在 "Set Cache Batch Updates" 页面中设置的时间来更新批量更新,则必须启用更新。


  12. 将会显示 "Schedule Batch Updates" 页面。

  13. 选择 "Update On" 或 "Update Off" 选项。

  14. 在下拉式列表中选择一个时间,然后选择您希望运行更新的日期。

  15. 单击 "OK"。

  16. 单击 "Restart required"。

    将会显示 "Apply Changes" 页面。

  17. 单击 "Restart Proxy Server" 按钮以应用更改。

编辑或删除批量更新配置

如果要排除某些文件或者要更频繁地更新批次,则可以编辑批量更新。您可能还希望完全删除某个批量更新配置。

Procedure编辑或删除批量更新配置

  1. 访问 Server Manager,然后单击 "Caching" 选项卡。

  2. 单击 "Set Cache Batch Updates" 链接。

    将会显示 "Set Cache Batch Updates" 页面。

  3. 要编辑某个批次,请选择该批次的名称,然后从 "Create/Select a Batch Update Configuration" 旁边的下拉式列表中选择 "Edit"。

  4. 单击 "OK"。

    将会显示 "Set Cache Batch Updates" 页面。

  5. 根据需要修改信息。

  6. 单击 "OK"。

  7. 单击 "Restart required"。

    将会显示 "Apply Changes" 页面。

  8. 单击 "Restart Proxy Server" 按钮以应用更改。

Procedure删除批量更新配置

  1. 访问 Server Manager,然后单击 "Caching" 选项卡。

  2. 单击 "Set Cache Batch Updates" 链接。

  3. 要删除某个批次,请选择该批次的名称,然后从 "Create/Select a Batch Update Configuration" 旁边的下拉式列表中选择 "Delete"。

  4. 单击 "OK"。

  5. 单击 "Restart required"。

    将会显示 "Apply Changes" 页面。

  6. 单击 "Restart Proxy Server" 按钮以应用更改。

使用高速缓存命令行界面

代理服务器自带若干个命令行实用程序,可以通过它们配置、更改、生成和修复高速缓存目录结构。这些实用程序中的大多数都与 Server Manager 页面的功能完全相同,但在需要进行维护调度时可能需要使用这些实用程序(例如,作为计时程序作业)。所有这些实用程序都位于 extras 目录中。

Procedure运行命令行实用程序

  1. 从命令行提示符下,转到 server_root/proxy-serverid 目录。

  2. 键入 ./start -shell

    以下各节介绍了各种实用程序。

生成高速缓存目录结构

cbuild 代理实用程序是一个脱机高速缓存数据库管理器。可以通过该实用程序使用命令行界面来创建新的高速缓存结构或修改现有的高速缓存结构。可以使用 Server Manager 页面来使代理服务器能够使用新创建的高速缓存。


注 –

该实用程序不更新 server.xml 文件。cbuild 不能调整具有多个分区的高速缓存的大小。通过 cbuild 创建或修改高速缓存时,应在 server.xml 文件中手动更新 cachecapacity 参数。

<PARTITION partitionname="part1" partitiondir="/home/build/install9
/proxy-server1/cache" maxsize="1600" minspace="5" enabled="true"/>
<CACHE enabled="true" cachecapacity="2000" cachedir="/tmp/cache">

可以在两种模式下调用 cbuild 实用程序。第一种模式为:

cbuild -d conf-dir -c cache-dir -s cache size 
cbuild -d conf-dir -c cache-dir -s cache size -r

例如:

cbuild -d server_root/proxy-serverid/config 
	-c server_root/proxy-serverid/cache -s 512
cbuild -d server_root/proxy-serverid/config 
	-c server_root/proxy-serverid/cache -s 512 -r

其中,

第二种模式为:

cbuild -d conf-dir -c cache-dir -n cache-dim
cbuild -d conf-dir -c cache-dir -n cache-dim -r

例如:

cbuild -d server_root/proxy-serverid/config 
	-c server_root/proxy-serverid/cache -n 3
cbuild -d server_root/proxy-serverid/config 
	-c server_root/proxy-serverid/cache -n 3 -r

其中,

管理高速缓存 URL 列表

代理实用程序 urldb 用于管理高速缓存中的 URL 列表。可以使用此实用程序列出高速缓存的 URL。也可以有选择地废止和删除高速缓存数据库中高速缓存的对象。

可以根据 -o 选项将 urldb 命令分为三个组:

管理高速缓存垃圾收集

通过 cachegc 实用程序,您可以将可能已过期或因存在时间过久而不能高速缓存(由于受到高速缓存大小约束)的对象从高速缓存数据库删除。


注 –

请确保在使用 cachegc 实用程序时,代理服务器实例中没有运行 CacheGC。


可以按以下方式使用 cachegc 实用程序:

cachegc -f leave-fs-full-percent -u gc-high-margin-percent -l gc-low-margin-percent -e 
	extra-margin-percent -d conf-dir

例如:

cachegc -f 50 -u 80 -l 60 -e 5 -d server-root/proxy-serverid/config

其中,

管理批量更新

bu 实用程序用于更新高速缓存,它在两种模式下工作。在第一种模式下,该实用程序循环遍历高速缓存数据库并通过发送对每个 URL 的 HTTP 请求更新高速缓存中存在的所有 URL。在第二种模式下,它从给定 URL 开始,对从该 URL 到您指定的深度的 URL 的所有链接执行广度优先遍历,获取页面并将其置于高速缓存中。bu 是符合 RFC 标准的爬虫程序 (robot)。

bu -n hostname -p port -t time-lmt -f contact-address -s sleep-time -o object -r n -d conf-dir

例如:

bu -n phoenix -p 80 -t 3600 -f admin@phoenix.com -s 60 -o nova -r n 
	-d server-root/proxy-serverid/config

其中,

使用 Internet 高速缓存协议 (Internet Cache Protocol, ICP)

Internet 高速缓存协议 (Internet Cache Protocol, ICP) 是一种对象位置协议,通过该协议各高速缓存可以彼此通信。高速缓存可以使用 ICP 就是否存在高速缓存的 URL 及这些 URL 的最佳检索位置发送查询和回复。在典型的 ICP 交换中,一个高速缓存会将有关特定 URL 的 ICP 查询发送给邻近的所有高速缓存。然后,这些高速缓存将发回 ICP 回复,指出其是否包含该 URL。如果这些高速缓存不包含该 URL,则会发回未命中消息 (miss)。如果它们确实包含该 URL,则会发回命中消息 (hit)。

通过 ICP 邻域进行路由选择

ICP 可用于位于不同管理域中的代理服务器间的通信。它使一个管理域中的代理服务器高速缓存能够与另一个管理域中的代理服务器高速缓存进行通信。如果若干个代理服务器要进行通信,但无法全部从一个主代理服务器进行配置(因为它们处于代理服务器阵列中),对于这种情况,使用 ICP 进行通信会很有效。图 12–3 显示了不同管理域中代理服务器间的 ICP 交换。

通过 ICP 相互通信的代理服务器称为近邻。一个 ICP 邻域中最多只能有 64 个近邻。ICP 邻域中有两种类型的近邻:父级代理服务器同级代理服务器。如果其他近邻都没有请求的 URL,则只有父级代理服务器可以访问远程服务器。ICP 邻域可以没有父级代理服务器,也可以有多个父级代理服务器。ICP 邻域中的任何父级代理服务器近邻均被视为同级代理服务器。除非将同级代理服务器标记为 ICP 的默认路由,并且 ICP 使用该默认路由,否则,同级代理服务器不能从远程服务器检索文档。

可以使用轮询轮次确定近邻接收查询的顺序。一个轮询轮次是一个 ICP 查询循环。必须为每个近邻指定一个轮询轮次。如果将所有近邻都配置在轮询轮次一中,则会在一个循环中同时查询所有近邻。如果将一些近邻配置在轮询轮次 2 中,将首先查询轮询轮次一中的所有近邻,如果没有近邻返回命中信息 (Hit),将查询轮询轮次二中的所有代理服务器。轮询轮次的最大值是二。

由于 ICP 父级代理服务器可能会成为网络瓶颈,因此可以使用轮询轮次来减轻其负载。常用的设置是将所有同级代理服务器配置在轮询轮次一中,将所有父级代理服务器配置在轮询轮次二中。这样,当本地代理服务器请求某个 URL 时,请求将首先转到邻域中的所有同级代理服务器。如果所有同级代理服务器都没有请求的 URL,将把请求转给父级代理服务器。如果父级代理服务器也没有请求的 URL,将从远程服务器进行检索。

ICP 邻域中的每个近邻必须至少有一个运行着的 ICP 服务器。如果某个近邻没有运行着的 ICP 服务器,将无法应答来自其近邻的 ICP 请求。在代理服务器上启用 ICP 时会启动 ICP 服务器(如果它尚未运行)。

图 12–3 ICP 交换

该图显示了不同管理域中代理服务器间的 ICP 交换。

设置 ICP

本节提供有关设置 ICP 的详细信息。设置 ICP 所需执行的常规步骤如下:

  1. (可选)向 ICP 邻域中添加父级代理服务器。

    有关更多信息,请参见向 ICP 邻域添加父级代理服务器或同级代理服务器

  2. 向 ICP 邻域中添加同级代理服务器。

    有关更多信息,请参见向 ICP 邻域添加父级代理服务器或同级代理服务器

  3. 配置 ICP 邻域中的每个近邻。

    有关更多信息,请参见在 ICP 邻域中编辑配置

  4. 启用 ICP。

    有关信息,请参见启用 ICP

  5. 如果代理服务器的 ICP 邻域中有同级代理服务器或父级代理服务器,请启用通过 ICP 邻域进行路由选择。

    有关更多信息,请参见启用通过 ICP 邻域进行路由选择

Procedure向 ICP 邻域添加父级代理服务器或同级代理服务器

  1. 访问 Server Manager,然后单击 "Caching" 选项卡。

  2. 单击 "Configure ICP" 链接。

    将会显示 "Configure ICP" 页面。

  3. 在该页面的 "Parent List" 部分中,单击 "Add" 按钮。

    将会显示 "ICP Parent" 页面。

    • 要添加父级代理服务器,请在该页面的 "Parent List" 部分中单击 "Add"。

      将会显示 "ICP Parent" 页面。

    • 要添加同级代理服务器,请在该页面的 "Sibling List" 部分中单击 "Add"。

      将会显示 "ICP Sibling" 页面。

  4. 在 "Machine Address" 字段中,键入要添加到 ICP 邻域的代理服务器的 IP 地址或主机名。

  5. 在 "ICP Port" 字段中,键入代理服务器将在其上侦听 ICP 消息的端口号。

  6. (可选)在 "Multicast Address" 字段中,键入父级代理服务器要侦听的多址广播地址。多址广播地址是指多个服务器可以侦听的 IP 地址。

    使用多址广播地址时,代理服务器能够向网络发送一个可被正在侦听该多址广播地址的所有近邻看到的查询。如果采用此技术,则可不必分别向每个近邻发送查询。多址广播的使用是可选的。


    注 –

    不同轮询轮次中的近邻不应侦听同一多址广播地址。


  7. 在 "TTL" 字段中,键入要将多址广播消息转发到的子网的数量。

    如果将 TTL 设置为 1,只会将多址广播消息转发到本地子网。如果 TTL 为 2,则将该消息发往隔一级的所有子网,依此类推。


    注 –

    多址广播使得两个不相关的近邻可以相互发送 ICP 消息。因此,为了防止不相关的近邻接收来自 ICP 邻域中的代理服务器的 ICP 消息,请在 "TTL" 字段中设置较低的 TTL 值。


  8. 在 "Proxy Port" 字段中,键入父级代理服务器上的代理服务器端口。

  9. 在 "Polling Round" 下拉式列表中,选择希望父级代理服务器所处的轮询轮次。默认轮询轮次为 1。

  10. 单击 "OK"。

  11. 单击 "Restart required"。

    将会显示 "Apply Changes" 页面。

  12. 单击 "Restart Proxy Server" 按钮以应用更改。

Procedure在 ICP 邻域中编辑配置

  1. 访问 Server Manager,然后单击 "Caching" 选项卡。

  2. 选择 "Configure ICP" 链接。将会显示 "Configure ICP" 页面。

  3. 选中要编辑的代理服务器旁边的单选按钮。

  4. 单击 "Edit" 按钮。

  5. 修改相应的信息。

  6. 单击 "OK"。

  7. 单击 "Restart required"。

    将会显示 "Apply Changes" 页面。

  8. 单击 "Restart Proxy Server" 按钮以应用更改。

Procedure从 ICP 邻域中删除代理服务器

  1. 访问 Server Manager,然后单击 "Caching" 选项卡。

  2. 选择 "Configure ICP" 链接。将会显示 "Configure ICP" 页面。

  3. 选中要删除的代理服务器旁边的单选按钮。

  4. 单击 "Delete" 按钮。

  5. 单击 "Restart required"。

    将会显示 "Apply Changes" 页面。

  6. 单击 "Restart Proxy Server" 按钮以应用更改。

Procedure在 ICP 邻域中配置本地代理服务器

您需要在 ICP 邻域中配置每个近邻或本地代理服务器。

  1. 访问 Server Manager,然后单击 "Caching" 选项卡。

  2. 选择 "Configure ICP" 链接。

    将会显示 "Configure ICP" 页面。

  3. 在 "Binding Address" 字段中,键入近邻服务器将绑定到的 IP 地址。

  4. 在 "Port" 字段中,键入近邻服务器将在其上侦听 ICP 的端口号。

  5. 在 "Multicast Address" 字段中,键入近邻要侦听的多址广播地址。

    多址广播地址是指多个服务器可以侦听的 IP 地址。使用多址广播地址时,代理服务器能够向网络发送一个可被正在侦听该多址广播地址的所有近邻看到的查询。如果采用此技术,则可不必分别向每个近邻发送查询。

    如果同时为近邻指定了多址广播地址和绑定地址,近邻将使用绑定地址发送回复,使用多址广播进行侦听。如果既未指定绑定地址也未指定多址广播地址,操作系统将决定使用哪个地址发送数据。

  6. 在 "Default Route" 字段中,键入代理服务器的名称或 IP 地址,当邻近代理服务器均未做出“命中”响应时,近邻应将请求路由到此代理服务器。

    如果您在此字段中键入文字 "origin",或将该字段留空,则默认情况下会路由至原始服务器。

    如果您从 "No Hit Behavior" 下拉式列表中选择 "first responding parent",则您在 "Default Route" 字段中键入的路由将不起作用。如果您选择默认的 "no hit" 行为,则代理服务器将只使用此路由。

  7. 在第二个 "Port" 字段中,键入您在 "Default Route" 字段中键入的默认路由机器的端口号。

  8. 从 "On No Hits, Route Through" 下拉式列表中,选择当 ICP 邻域中所有同级代理服务器的高速缓存中均无请求的 URL 时近邻的行为。

    可用选项包括:

    • first responding parent。近邻将通过最先做出“未命中”响应的父级代理服务器检索请求的 URL。

    • default route。近邻将通过在 "Default Route" 字段中指定的机器检索请求的 URL。

  9. 在 "Server Count" 字段中,键入将要服务于 ICP 请求的进程数。

  10. 在 "Timeout" 字段中,键入每一轮次中近邻等待 ICP 响应的最大时间长度。

  11. 单击 "OK"。

  12. 单击 "Restart required"。

    将会显示 "Apply Changes" 页面。

  13. 单击 "Restart Proxy Server" 按钮以应用更改。

Procedure启用 ICP

  1. 访问 Server Manager,然后单击 "Preferences" 选项卡。

  2. 单击 "Configure System Preferences" 链接。

    将会显示 "Configure System Preferences" 页面。

  3. 选中对应于 ICP 的 "Yes" 单选按钮,然后单击 "OK"。

  4. 单击 "Restart required"。

    将会显示 "Apply Changes" 页面。

  5. 单击 "Restart Proxy Server" 按钮以应用更改。

Procedure启用通过 ICP 邻域进行路由选择

只有当代理服务器在 ICP 邻域中有其他同级代理服务器或父级代理服务器时,才需要启用通过 ICP 邻域进行路由选择。如果代理服务器是另一个代理服务器的父级代理服务器,并且它本身没有任何同级代理服务器或父级代理服务器,则只需要为该代理服务器启用 ICP,而不需要启用通过 ICP 邻域进行路由选择。

  1. 访问 Server Manager,然后单击 "Routing" 选项卡。

  2. 单击 "Set Routing Preferences" 链接。

    将会显示 "Set Routing Preferences" 页面。

  3. 从下拉式列表中选择资源,或单击 "Regular Expression" 按钮,键入正则表达式,然后单击 "OK"。

  4. 选中 "Route Through" 选项旁边的单选按钮。

  5. 选中 ICP 旁边的复选框。

  6. (可选)要使客户机直接从拥有文档的 ICP 近邻检索文档,而不是通过其他近邻获取文档,请选中 "Text Redirect" 选项旁边的复选框。

  7. 单击 "OK"。


    注意 – 注意 –

    当前任何客户机都不支持重定向,所以目前请不要使用该功能。


  8. 单击 "Restart required"。

    将会显示 "Apply Changes" 页面。

  9. 单击 "Restart Proxy Server" 按钮以应用更改。

使用代理服务器阵列

可以通过分布式高速缓存的代理服务器阵列将多个代理服务器作为一个高速缓存来使用。阵列中的每个代理服务器都将包含不同的高速缓存 URL,浏览器或下游代理服务器可以检索这些 URL。代理服务器阵列可以防止有多个代理服务器时经常发生的高速缓存重复。代理服务器阵列通过基于散列的路由选择将请求路由到代理服务器阵列中正确的高速缓存中。

代理服务器阵列也允许增量式可伸缩性。如果决定将另一个代理服务器添加到代理服务器阵列,每个成员的高速缓存都不会失效。只会将每个成员的高速缓存中 URL 的 1/n(其中 n 是阵列中的代理服务器数)重新指定给其他成员。

通过代理服务器阵列进行路由选择

对于通过代理服务器阵列的每个请求,散列函数将根据请求的 URL、代理服务器的名称及代理服务器的负载因子为阵列中的每个代理服务器指定一个分数,然后将请求路由到分数最高的代理服务器。

因为 URL 请求可能来自客户机和代理服务器,所以通过代理服务器阵列进行的路由选择有两种类型:客户机到代理服务器路由选择和代理服务器到代理服务器路由选择。

在客户机到代理服务器路由选择中,客户机使用代理自动配置 (Proxy Auto Configuration, PAC) 机制确定要通过哪个代理服务器。不过,客户机不是使用标准的 PAC 文件,而是使用一种特殊的 PAC 文件来计算散列算法,以便为请求的 URL 确定合适的路由。图 12–4 显示了客户机到代理服务器的路由选择。在此图中,代理服务器阵列的每个成员均加载并轮询主代理服务器,以确定是否有对 PAT 文件的更新。客户机一旦下载了 PAC 文件,则只有在配置发生变化时才需要再次下载该文件。客户机通常在重新启动时下载 PAC 文件。

代理服务器可以根据您使用管理界面确定的代理服务器阵列成员资格表 (Proxy Array Membership Table, PAT) 规范自动生成特殊 PAC 文件。

图 12–4 客户机到代理服务器路由选择

该图显示了客户机到代理服务器路由选择。

在代理服务器到代理服务器路由选择中,代理服务器使用 PAT(Proxy Array Table,代理服务器阵列表)文件而不是客户机使用的 PAC 文件来计算散列算法。PAT 文件是一种 ASCII 文件,它包含有关代理服务器阵列的信息,如代理服务器的机器名称、IP 地址、端口、负载因子、高速缓存大小等。要在服务器上计算散列算法,使用 PAT 文件比使用 PAC 文件(该文件是一种 JavaScript 文件,必须在运行时对其进行解释)要高效得多。不过,大多数客户机无法识别 PAT 文件格式,因此必须使用 PAC 文件。图 12–5 显示了代理服务器到代理服务器路由选择。

PAT 文件是在代理服务器阵列中的主代理服务器上创建的。代理服务器管理员必须确定将哪一个代理服务器作为主代理服务器。管理员可以通过此主代理服务器更改 PAT 文件,之后代理服务器阵列的所有其他成员可以手动或自动方式轮询主代理服务器来获悉这些更改。您可以将每个成员都配置为根据这些更改自动生成 PAC 文件。

也可以将代理服务器阵列链接在一起,进行分层结构路由选择。如果代理服务器通过上游代理服务器阵列路由传入的请求,则该上游代理服务器阵列被称为父阵列。也就是说,如果客户机从代理服务器 X 请求文档,而代理服务器 X 没有该文档,它将把请求发送给代理服务器阵列 Y,而不是直接将请求发送到远程服务器。因此,代理服务器阵列 Y 是父阵列。

图 12–5 中,代理服务器阵列 1 是代理服务器阵列 2 的父阵列。代理服务器阵列 2 的成员会加载并进行轮询,以确定是否有对父阵列 PAT 文件的更新。通常,该成员轮询父阵列中的主代理服务器。将使用下载的 PAT 文件计算请求的 URL 的散列算法,之后代理服务器阵列 2 的成员就可以从代理服务器阵列 1 中分数最高的代理服务器中检索请求的 URL。在此图中,对于客户机请求的 URL,代理服务器 B 的分数最高。

图 12–5 代理服务器到代理服务器路由选择

该图显示了代理服务器到代理服务器路由选择。

设置代理服务器阵列的常规步骤如下所示。

从主代理服务器中,执行以下步骤:

  1. 创建代理服务器阵列。

    有关创建成员列表的更多信息,请参见创建代理服务器阵列成员列表

  2. 根据 PAT 文件生成 PAC 文件。

    如果使用客户机到代理服务器路由选择,只需生成 PAC 文件。有关更多信息,请参见根据 PAT 文件生成 PAC 文件

  3. 配置阵列的主成员。有关更多信息,请参见配置代理服务器阵列成员

  4. 启用通过代理服务器阵列进行路由选择。有关更多信息,请参见启用通过代理服务器阵列进行路由选择

  5. 创建 PAT 映射以将 URL /pat 映射到 PAT 文件。

  6. 启用代理服务器阵列。

    有关更多信息,请参见启用或禁用代理服务器阵列

从每个非主代理服务器中,执行以下步骤:

  1. 配置阵列的非主成员。

    有关更多信息,请参见配置代理服务器阵列成员

  2. 启用通过代理服务器阵列进行路由选择。

    有关更多信息,请参见启用通过代理服务器阵列进行路由选择

  3. 启用代理服务器阵列。

    有关更多信息,请参见启用或禁用代理服务器阵列


    注 –

    如果代理服务器阵列要通过父阵列进行路由,则还需要启用父阵列并将每个成员配置为通过父阵列进行路由以获得所需的 URL。有关更多信息,请参见通过父阵列进行路由选择


创建代理服务器阵列成员列表

只应在阵列的主代理服务器中创建和更新代理服务器阵列成员列表。代理服务器阵列成员列表只需创建一次,但可以随时对其进行修改。通过创建代理服务器阵列成员列表,将生成分布到阵列中的所有代理服务器及任何下游代理服务器的 PAT 文件。


注 –

只应通过阵列中的主代理服务器对代理服务器阵列成员列表进行更改或添加。阵列的所有其他成员只能读取成员列表。


Procedure创建代理服务器阵列成员列表

  1. 访问 Server Manager,然后单击 "Caching" 选项卡。

  2. 单击 "Configure Proxy Array" 链接。

    将会显示 "Configure Proxy Array" 页面。

  3. 在 "Array name" 字段中,键入阵列的名称。

  4. 在 "Reload Configuration Every" 字段中,键入针对 PAT 文件执行轮询的时间间隔(以分钟为单位)。

  5. 单击 "Array Enabled" 复选框。

  6. 单击 "Create" 按钮。

    创建代理服务器阵列后,"Create" 按钮将更改为 "OK" 按钮。


    注 –

    一定要在开始向成员列表中添加成员之前单击 "OK"。


  7. 单击 "OK"。

  8. 单击 "Restart required"。

    将会显示 "Apply Changes" 页面。

  9. 为代理服务器阵列中的每个成员提供以下信息,然后单击 "OK"。

    应先添加主成员,然后再添加其他成员。

    • Name。要添加到成员列表的代理服务器的名称。

    • IP Address。要添加到成员列表的代理服务器的 IP 地址。

    • Port。此为成员针对 PAT 文件进行轮询时所使用的端口。

    • Load Factor。一个整数,它反映应该通过成员进行路由的相对负载。

    • Status。成员的状态。此值可以为 "on" 或 "off"。如果禁用某个代理服务器阵列成员,将会通过其他成员重新路由该成员的请求。


    注 –

    键入要添加的每个代理服务器阵列成员的信息之后,一定要单击 "OK"。


  10. 单击 "Restart required"。

    将会显示 "Apply Changes" 页面。

  11. 单击 "Restart Proxy Server" 按钮以应用更改。

编辑代理服务器阵列成员列表信息

可以随时更改代理服务器阵列成员列表中各成员的信息。只能通过主代理服务器编辑代理服务器阵列成员列表。


注 –

只应通过阵列中的主代理服务器对代理服务器阵列成员列表进行更改或添加。如果通过阵列的任何其他成员修改此列表,所有更改都将丢失。


Procedure编辑成员列表信息

  1. 访问 Server Manager,然后单击 "Caching" 选项卡。

  2. 单击 "Configure Proxy Array" 链接。

    将会显示 "Configure Proxy Array" 页面。

  3. 在 "Member List" 中,选中要编辑的成员旁边的单选按钮。

  4. 单击 "Edit" 按钮。

    将会显示 "Configure Proxy Array Member" 页面。

  5. 编辑相应的信息。

  6. 单击 "OK"。

  7. 单击 "Restart required"。

    将会显示 "Apply Changes" 页面。

  8. 单击 "Restart Proxy Server" 按钮以应用更改。


    注 –

    如果想使更改生效并将其分布到代理服务器阵列的各个成员,请更新 "Configure Proxy Array" 页面上的配置 ID,然后单击 "OK"。要更新配置 ID,只需将其值增加一即可。


删除代理服务器阵列成员

删除代理服务器阵列成员时,会将它们从代理服务器阵列中删除。只能通过主代理服务器删除代理服务器阵列成员。

Procedure删除代理服务器阵列的成员

  1. 访问 Server Manager,然后单击 "Caching" 选项卡。

  2. 单击 "Configure Proxy Array" 链接。

    将会显示 "Configure Proxy Array" 页面。

  3. 在 "Member List" 中,选中要删除的成员旁边的单选按钮。

  4. 单击 "Delete" 按钮。


    注 –

    如果想使更改生效并将其分布到代理服务器阵列的各个成员,请更新 "Configure Proxy Array" 页面上的配置 ID,然后单击 "OK"。要更新配置 ID,只需将其值增加一即可。


  5. 单击 "Restart required"。

    将会显示 "Apply Changes" 页面。

  6. 单击 "Restart Proxy Server" 按钮以应用更改。

配置代理服务器阵列成员

必须通过代理服务器阵列中的每个成员本身配置该成员一次。不能通过阵列的某个成员配置另一个成员。还需要配置主代理服务器。

Procedure配置代理服务器阵列的每个成员

  1. 访问 Server Manager,然后单击 "Caching" 选项卡。

  2. 单击 "Configure Proxy Array Member" 链接。

    将会显示 "Configure Proxy Array Member" 页面。

  3. 在 "Proxy Array" 部分中,通过选中相应的单选按钮指示成员是否需要针对 PAT 文件进行轮询。

    • Non-Master Member。如果您配置的成员不是主代理服务器,请选择此选项。任何不是主代理服务器的代理服务器阵列成员都必须针对 PAT 文件执行轮询,以便从主代理服务器检索该文件。

    • Master Member。如果配置的是主代理服务器,请选择此选项。如果配置的是主代理服务器,PAT 文件将是本地文件,不需要进行轮询。

  4. 在 "Poll Host" 字段中,键入将要针对 PAT 文件进行轮询的主代理服务器的名称。

  5. 在 "Port" 字段中,键入主代理服务器接受 HTTP 请求的端口。

  6. 在 "URL" 字段中,键入主代理服务器上 PAT 文件的 URL。如果您已经在主代理服务器上创建了一个 PAT 映射,要将该 PAT 文件映射到 URL /pat,应在 "URL" 字段中键入 /pat

  7. (可选)在 "Headers File" 字段中,键入含有任何特殊标头的文件的完整路径名,这些标头必须与 PAT 文件的 HTTP 请求(如验证信息)一起发送。

  8. 单击 "OK"。

  9. 单击 "Restart required"。

    将会显示 "Apply Changes" 页面。

  10. 单击 "Restart Proxy Server" 按钮以应用更改。

启用通过代理服务器阵列进行路由选择

Procedure启用通过代理服务器阵列进行路由选择

  1. 访问 Server Manager,然后单击 "Routing" 选项卡。

  2. 单击 "Set Routing Preferences" 链接。

    将会显示 "Set Routing Preferences" 页面。

  3. 从下拉式列表中选择资源,或单击 "Regular Expression" 按钮,键入正则表达式,然后单击 "OK"。

  4. 选择 "Route Through" 选项。

  5. 选中代理服务器阵列或父阵列的复选框。

    只有当要配置的代理服务器是代理服务器阵列的成员时,才可以启用代理服务器阵列路由选择。如果存在父阵列,则只能启用父阵列路由选择。这两个路由选择选项相互独立。

  6. 如果选择通过代理服务器阵列进行路由,并且要将请求重定向到其他 URL,请选中 "redirect" 复选框。

    重定向是指如果代理服务器阵列的成员收到不应由其处理的请求,它会告知客户机与哪个代理服务器联系以处理该请求。

  7. 单击 "OK"。

  8. 单击 "Restart required"。

    将会显示 "Apply Changes" 页面。

  9. 单击 "Restart Proxy Server" 按钮以应用更改。

启用或禁用代理服务器阵列

如果不通过代理服务器阵列进行路由选择,则在禁用代理服务器阵列选项前应确保所有客户机都使用特殊的 PAC 文件正确地进行路由。如果您禁用了父阵列选项,则应在 "Set Routing Preferences" 页面中设置有效的替代路由选择选项,如显式代理服务器或直接连接。

Procedure启用或禁用代理服务器阵列

  1. 访问 Server Manager,然后单击 "Preferences" 选项卡。

  2. 单击 "Configure System Preferences" 链接。

    将会显示 "Configure System Preferences" 页面。

  3. 启用或禁用代理服务器阵列。

    • 要启用代理服务器阵列,请单击与要启用的阵列(普通代理服务器阵列或父阵列)类型对应的 "Yes" 选项。

    • 要禁用代理服务器阵列,请单击 "No"。

  4. 单击 "OK"。

  5. 单击 "Restart required"。

    将会显示 "Apply Changes" 页面。

  6. 单击 "Restart Proxy Server" 按钮以应用更改。

重定向代理服务器阵列中的请求

如果选择通过代理服务器阵列进行路由,则需要指定是否要将请求重定向到另一个 URL。重定向是指如果代理服务器阵列的成员收到不应由其处理的请求,它会告知客户机与哪个代理服务器联系以处理该请求。

根据 PAT 文件生成 PAC 文件

因为大多数客户机无法识别 PAT 文件格式,所以在客户机到代理服务器路由选择中,客户机使用代理自动配置 (Proxy Auto Configuration, PAC) 机制接收有关要通过哪个代理服务器的信息。不过,客户机使用的不是标准的 PAC 文件,而是源自 PAT 文件的一种特殊的 PAC 文件。这种特殊的 PAC 文件通过计算散列算法来为请求的 URL 确定合适的路由。

可以根据 PAT 文件手动或自动生成 PAC 文件。如果通过代理服务器阵列的某个特定成员手动生成 PAC 文件,该成员将立即根据 PAT 文件中的当前信息重新生成 PAC 文件。如果您将某个代理服务器阵列成员配置为自动生成 PAC 文件,则该成员将在每次检测到 PAT 文件的修改版本后自动重新生成该文件。


注 –

如果您没有为代理服务器使用代理服务器阵列功能,请使用 "Create/Edit Autoconfiguration File" 页面生成 PAC 文件。有关更多信息,请参见第 17 章


Procedure根据 PAT 文件手动生成 PAC 文件

只能通过主代理服务器生成 PAC 文件。

  1. 访问主代理服务器的 Server Manager,然后单击 "Caching" 选项卡。

  2. 单击 "Configure Proxy Array" 链接。

    将会显示 "Configure Proxy Array" 页面。

  3. 单击 "Generate PAC" 按钮。

    将会显示 "PAC Generation" 页面。

  4. 如果要在 PAC 文件中使用自定义逻辑,请在 "Custom logic file" 字段中键入文件名称,该文件包含要在生成 PAC 文件时包括的自定义逻辑。

    将把此逻辑插入到 FindProxyForURL 函数中的代理服务器阵列选择逻辑前。此函数通常用于不需要通过代理服务器阵列的本地请求。

    如果您已在配置代理服务器阵列成员时提供了该自定义逻辑文件,将会用该信息填充此字段。您可以在这里编辑自定义逻辑文件名。

  5. 在 "Default Route" 字段中,键入当阵列中的代理服务器不可用时客户机应采用的路由。

    如果您已在配置代理服务器阵列成员时提供了默认路由,将会用该信息填充此字段。您可以在这里编辑默认路由。

  6. 单击 "OK"。

  7. 单击 "Restart required"。

    将会显示 "Apply Changes" 页面。

  8. 单击 "Restart Proxy Server" 按钮以应用更改。

Procedure自动生成 PAC 文件

  1. 访问 Server Manager,然后单击 "Caching" 选项卡。

  2. 单击 "Configure Proxy Array Member" 链接。

    将会显示 "Configure Proxy Array Member" 页面。

  3. 选中 "Auto-generate PAC File" 复选框。

  4. 如果要在 PAC 文件中使用自定义逻辑,请在 "Custom Logic File" 字段中键入文件名称,该文件包含要在生成 PAC 文件时包括的自定义逻辑。

    将把此逻辑插入到 FindProxyForURL 函数中的代理服务器阵列选择逻辑前。

    如果您已在配置代理服务器阵列时提供并保存了该自定义逻辑文件,将会用该信息填充此字段。您可以在这里编辑自定义逻辑文件名。

  5. 在 "Default Route" 字段中,键入当阵列中的代理服务器不可用时客户机应采用的路由。

    如果您已在配置代理服务器阵列时提供了默认路由,将会用该信息填充此字段。您可以编辑默认路由。

  6. 单击 "OK"。

  7. 单击 "Restart required"。

    将会显示 "Apply Changes" 页面。

  8. 单击 "Restart Proxy Server" 按钮以应用更改。

通过父阵列进行路由选择

可以将代理服务器或代理服务器阵列成员配置为通过上游父阵列进行路由,而不是直接转至远程服务器。

Procedure通过父阵列进行路由选择

  1. 启用父阵列。

    有关更多信息,请参见启用或禁用代理服务器阵列

  2. 启用通过父阵列进行路由选择。

    有关更多信息,请参见启用通过代理服务器阵列进行路由选择

  3. 访问 Server Manager,然后单击 "Caching" 选项卡。

  4. 单击 "Configure Proxy Array Member" 链接。

    将会显示 "Configure Proxy Array Member" 页面。

  5. 在该页面的 "Parent Array" 部分的 "Poll Host" 字段中,键入父阵列中将针对 PAT 文件对其进行轮询的代理服务器的主机名。

    此代理服务器通常是父阵列的主代理服务器。

  6. 在该页面的 "Parent Array" 部分的 "Port" 字段中,键入父阵列中将针对 PAT 文件对其进行轮询的代理服务器的端口号。

  7. 在 "URL" 字段中,键入主代理服务器上 PAT 文件的 URL。

    如果您已在主代理服务器中创建了 PAT 映射,请在此 "URL" 字段中键入该映射。

  8. (可选)在该表单的 "Parent Array" 部分的 "Headers File" 字段中,键入含有任何特殊标头的文件的完整路径名,这些标头必须与 PAT 文件的 HTTP 请求(如验证信息)一起发送。

    该字段为可选字段。

  9. 单击 "OK"。

  10. 单击 "Restart required"。

    将会显示 "Apply Changes" 页面。

  11. 单击 "Restart Proxy Server" 按钮以应用更改。

查看父阵列信息

如果代理服务器阵列要通过父阵列进行路由选择,则需要有关该父阵列的成员的信息。此信息以 PAT 文件形式从父阵列发出。

Procedure查看父阵列信息

  1. 访问 Server Manager,然后单击 "Caching" 选项卡。

  2. 单击 "View Parent Array Configuration" 链接。

    将会显示 "View Parent Array Configuration" 页面。

  3. 查看信息。