Citrix ADC

提高缓存性能

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

减少拥挤人群

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

以下技巧可以减少或消除快闪人群:

  • 预取:在一个正响应过期之前刷新它,以确保它永远不会过期或不活跃。有关详细信息,请参阅“在过期之前刷新响应”一节。
  • 缓存缓冲区:当它从源服务器接收到响应头时,开始向多个客户端提供响应,而不是等待整个响应被下载。可以同时下载响应的客户机数量的唯一限制是可用的系统资源。即使发起下载的客户机在下载完成之前停止,Citrix ADC设备也会下载并提供响应。如果响应超过缓存大小,或者响应被分块,缓存将停止存储响应,但对客户端的服务不会中断。
  • 闪存缓存:Flash Cache将请求排队到缓存,并且一次只允许一个请求到达服务器。

有关更多信息,请参阅“将请求排队到缓存”一节。

在过期前刷新响应

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

此设置对于在请求之间频繁更新的数据非常有用。它不适用于否定响应(例如404消息)。

使用命令行方式配置内容组预取

在命令提示符下,输入:

set cache contentgroup -prefetch YES [-prefetchPeriod | - prefetchperiodmilliseconds ] [-prefetchMaxPending ]

*通过GUI配置内容组的预取

导航到优化>集成缓存>内容组织,并选择内容组

其他人页签,在“Flash Crowd and Prefetch”组中选择预取选项,并在“间隔时间”和“最大挂起预取次数”文本框中指定值。

将请求排队到缓存

Flash Cache选项将同时到达的请求排成队列(Flash crowd),检索响应,并将其分发给队列中请求的所有客户端。如果在此过程中,响应变得不可缓存,则Citrix ADC设备停止从缓存提供响应,而是将源服务器的响应提供给排队的客户端。如果响应不可用,客户端将收到一条错误消息。

Flash Cache默认关闭。同一个内容组不能同时启用PET (Poll Every Time)和Flash Cache。

Flash Cache的一个缺点是,如果服务器响应了一个错误(例如,很快修复的404),那么这个错误就会分散到等待的客户端。

请注意如果启用Flash Cache,在某些情况下Citrix ADC设备无法正确匹配客户端请求中的Accept-Encoding头与响应中的Content-Encoding头。Citrix ADC设备可以假设这些头匹配并错误地提供命中。作为一种解决方法,您可以配置集成缓存策略,以禁止向没有适当Accept-Encoding标头的客户端提供命中。

使用命令行方式开启Flash Cache

在命令提示符下,输入:

set cache contentgroup -flashcache yes

通过GUI启用Flash Cache

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

其他人页签,在“Flash Crowd and Prefetch”组中选择预取选择。

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

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

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

通过命令行接口配置快速中止大小

在命令提示符下,输入:

set cache contentgroup -quickAbortSize

通过使用GUI配置快速中止大小

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

在缓存之前需要最少的服务器点击数

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

最小命中数的默认值为0。此值在第一个请求之后缓存响应。

通过使用命令行接口配置缓存前所需的最小命中数

在命令提示符下,输入:

set cache contentgroup -minhits

通过使用GUI配置缓存前所需的最小点击数

  1. 导航到优化>集成缓存>内容组织,并选择内容组。
  2. 内存选项卡中,如果命中数小于文本框,则在“不缓存”中设置相关值。

性能优化示例

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

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

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

为股票报价创建内容组

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

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

  1. 到期的方法选项卡,选择“收到完整响应后过期”复选框。
  2. 其他人选项卡,选择闪存缓存复选框,然后单击创建
  3. 添加一个缓存策略来缓存股票报价。

有关详细信息,请参见“在集成缓存中配置策略”。

为策略配置如下内容

  1. 动作和存储在组列表中,选择缓存并选择在上一步中定义的组。
  2. 点击添加,而在添加表情对话框中配置一个表达式来标识股票报价请求,例如:
  3. 激活策略。

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

提高缓存性能