ADC

提高缓存性能

您可以提高集成缓存的性能,包括处理对同一缓存数据的同时请求,避免与从源服务器刷新缓存响应相关的延迟,以及确保经常请求响应足够值得缓存。

减少闪光人群

当许多用户同时请求相同的数据时,会出现闪存人群。如果您将缓存配置为仅在下载整个对象后才提供单击,那么闪存人群中的请求可能会变为缓存未命中。

以下技术可以减少或消除闪光人群:

  • PREFETCH:在正面响应到期之前刷新该响应,以确保它永远不会过时或处于非活动状态。有关更多信息,请参阅“在过期前刷新响应”部分。
  • 缓存缓冲:当多个客户端收到来自源服务器的响应头时,开始向多个客户端提供响应,而不是等待下载整个响应。可同时下载响应的客户端数量的唯一限制是可用的系统资源。即使启动下载的客户端在下载完成之前停止,NetScaler 设备也会下载并提供响应。如果响应超过缓存大小或响应被分块,缓存将停止存储响应,但是向客户端提供的服务不会中断。
  • 闪存缓存: 闪存缓存将请求排队,并且一次只允许一个请求到达服务器。

有关更多信息,请参阅“将请求排入缓存队列”部分。

在到期前刷新回复

为确保缓存的响应在需要时保持最新状态,PREFETCH 选项会在计算的到期时间之前刷新响应。预取间隔是在收到第一个客户机请求后计算的。从那时起,NetScaler 设备会按照您在 PREFETCH 参数中配置的时间间隔刷新缓存的响应。

此设置对于请求之间频繁更新的数据很有用。它不适用于否定回复(例如,404 消息)。

使用命令行界面为内容组配置预取

在命令提示符下,键入:

set cache contentgroup <name> -prefetch YES [-prefetchPeriod <seconds> | -prefetchPeriodMilliSec <milliseconds>] [-prefetchMaxPending <positiveInteger>]

*使用 GUI 为内容组配置预取

导航到“优化”>“集成缓存”>“内容组”,然后选择 内容组

其他 选项卡的 Flash Crowd 和预回迁组中,选择 预回迁 选项,然后在挂起的预取的间隔和最大数量文本框中指定值。

将请求排队到缓存

Flash Cache 选项对同时到达的请求(闪存组)进行排队,检索响应,然后将其分发给请求在队列中的所有客户端。如果在此过程中响应变为不可缓存,则 NetScaler 设备将停止提供来自缓存的响应,而是将源服务器的响应提供给排队的客户端。如果响应不可用,则客户端会收到一条错误消息。

默认情况下,闪存缓存处于禁用状态。您无法对同一个内容组启用“每次投票”(PET) 和 Flash Cache。

Flash Cache 的一个缺点是,如果服务器回复错误(例如,快速修复的 404),则错误会分散到等待的客户端。

注意: 如果启用了 Flash Cache,则在某些情况下,NetScaler 设备无法将客户端请求中的 Accept-Encoding 标头与响应中的内容编码标头正确匹配。NetScaler 设备可以假设这些标头匹配并错误地提供命中。解决方法是,您可以将集成缓存策略配置为不允许向没有适当的 Accept-Encoding 标头的客户端提供单击量。

使用命令行界面启用 Flash Cache

在命令提示符下,键入:

set cache contentgroup <contentGroupName> -flashcache yes

使用 GUI 启用闪存缓存

导航到 优化 > 集成缓存 > 内容组,然后选择内容组。

在“其他”选项卡的“Flash Crowd 和 Prefetch”组中,选择“预取”选项

在客户端停止下载后缓存响应

您可以设置 Quick Abort 参数以继续缓存响应,即使客户端在响应进入缓存之前暂停了请求。

如果下载的响应大小小于或等于快速中止大小,NetScaler 设备将停止下载响应。如果您将 Quick Abort 参数设置为 0,则所有下载都将停止。

使用命令行界面配置快速中止大小

在命令提示符下,键入:

set cache contentgroup <name> -quickAbortSize <integerInKBytes>

使用 GUI 配置快速中止大小

  1. 导航到 优化 > 集成缓存 > 内容组,然后选择内容组。
  2. 在“内存”选项卡上,在“快速中止:如果超过文本框则继续缓存”中设置相关值。

在缓存之前需要最少的服务器命中次数

您可以配置必须在源服务器上找到响应才能被缓存的最小次数。如果缓存内存快速填满且命中率低于预期,则必须考虑增加最低单击率。

最小单击次数的默认值为 0。该值在第一次请求后缓存响应。

使用命令行界面配置缓存前所需的最小命中次数

在命令提示符下,键入:

set cache contentgroup <name> -minhits <positiveInteger>

使用 GUI 配置缓存前所需的最小命中数

  1. 导航到 优化 > 集成缓存 > 内容组,然后选择内容组。
  2. 内存 选项卡上,如果单击次数小于文本框,请勿缓存中设置相关值。

性能优化示例

在此示例中,客户访问股票报价。股票报价是高度动态的。您可以将集成缓存配置为向并发客户提供相同的股票报价,而无需向源服务器发送多个请求。股票报价在下载给客户后到期,下一个请求从源服务器获取。这可确保报价始终是最新的。

以下任务概述描述了为股票报价应用程序配置缓存的步骤。

为股票报价应用程序配置缓存

为股票报价创建内容组

有关更多信息,请参阅“关于内容组”。“

为此内容组配置以下内容:

  1. 在“到期方法”选项卡上,选中“收到完整回复后过期”复选框。
  2. 在“其他”选项卡上,选中 Flash Cache 复选框,然后单击“创建”。
  3. 添加缓存策略以缓存股票报价。

更多信息请参阅“在集成缓存中配置策略”。“

为策略配置以下内容

  1. 在“操作”和“存储在组中”列表中,选择 CAC HE 并选择您在上一步中定义的组。
  2. 单击“添加”,然后在“添加表达式”对话框中配置一个用于识别股票报价请求的表达 式,例如:http.req.url.contains(“cgi-bin/stock-quote.pl”)
  3. 激活策略。

有关更多信息,请参阅“全局绑定集成缓存策略”。“ 在此示例中,您将此策略绑定到请求时间覆盖处理,并将优先级设置为较低的值。

提高缓存性能