ADC

集成缓存

内容组

  • DEFAULT 内容组与其他内容组有何不同?

    DEFAULT 内容组的行为与任何其他群组的行为相同。使 DEFAULT 内容组特别的唯一属性是,如果正在缓存对象且尚未创建任何内容组。该对象将缓存在 DEFAULT 组中。

  • 内容组级别的“缓存控制”选项是什么?

    您可以向浏览器发送任何缓存控制头。有一个内容组级别选项 -cacheControl,它允许您指定要插入到浏览器响应中的缓存控制标头。

  • 内容组级别中的“Minhit”选项是什么?

    Minhit 是一个整数值,用于指定缓存对象之前对缓存策略的最小选择次数。此值可在内容组级别进行配置。以下是从 CLI 配置此值的语法。

    add/set cache contentGroup \<Content_Group_Name> [-minHits \<Integer>]

  • expireAtLastByte 选项的用途是什么?

    ExpReatLastByte 选项使集成缓存在下载对象时使其过期。然后,只有未处理请求的请求才会从缓存中处理。任何新请求都会发送到服务器。当对象经常被修改时,如股票报价时,此设置非常有用。此过期机制与闪存缓存功能一起工作。要配置 ExpireatLastByte 选项,请从 CLI 运行以下命令:

    add cache contentGroup \<Group_Name> –expireAtLastByte YES

缓存策略

  • 什么是缓存策略?

    策略确定哪些事务可缓存,哪些不可缓存。此外,策略会添加或覆盖标准 HTTP 缓存行为。策略根据请求或响应的特定特性来确定操作(如 CACHE 或 NOCACHE)。如果响应与策略规则匹配,则响应中的对象将添加到策略中配置的内容组中。如果尚未配置内容组,则该对象将添加到 DEFAULT 内容组中。

  • 什么是策略命中?

    当请求或响应与缓存策略匹配时,将发生选择。

  • 什么是未命中?

    当请求或响应与任何缓存策略不匹配时,会发生错误。如果请求或响应匹配缓存策略,但对 RFC 行为的某些覆盖阻止对象存储在缓存中,也可能发生错误。

  • 我已经配置了 Citrix ADC 设备的集成缓存功能。添加以下策略时,将显示一条错误消息。命令中是否有任何错误?

    add cache policy image_caching -rule exp1 | ns_ext_not_jpeg –action cache

    \> ERROR: No such command

    在前面的命令中,表达式必须在引号内。如果没有引号,则操作员被视为管道操作员。

内存要求

  • 我可以在 Citrix ADC 设备上运行哪些命令来检查分配给缓存的内存?

    要显示 Citrix ADC 设备中为缓存分配的内存,请从 CLI 运行以下命令之一:

    • show cache parameter

      在输出中,检查内存使用限制参数的值。这是分配给缓存的最大内存。

    • show cache \<Content_Group_Name>

      在输出中,检查“内存使用量”和“内存使用量限制”参数的值,这些参数指示了为单个内容组使用和分配的内存。

  • 我的 Citrix ADC 设备有 2 GB 的内存。缓存是否有任何建议的内存限制?

    对于 Citrix ADC 设备的任何型号,您可以将一半内存分配给缓存。但是,Citrix 建议分配不到一半的内存,因为内存依赖关系。您可以运行以下命令将 1 GB 内存分配给缓存:

    set cache parameter -memLimit 1024

  • 是否有可能为单个内容组分配内存?

    是。即使您通过运行 set cache parameter –memlimit<Integer> 来全局为集成缓存分配内存,也可以通过运行 set cache <Content_Group_Name> –memLimit <Integer> 命令将内存分配给各个内容组。您可以分配给内容组(组合)的最大内存不能超过已分配给集成缓存的内存。

  • 集成缓存和 TCP 缓冲区之间的内存依赖关系是什么?

    如果 Citrix ADC 设备有 2 GB 内存,则设备将预留大约 800 MB 到 900 MB 的内存,其余内存将分配给 FreeBSD 操作系统。因此,您可以为集成缓存分配最多 512 MB 的内存,其余内存分配给 TCP 缓冲区。

  • 如果我不将全局内存分配给集成缓存,它是否会影响缓存过程?

    如果不为集成缓存分配内存,则所有请求都会发送到服务器。若要确保已将内存分配给集成缓存,请运行 show cache 参数命令。实际上,如果全局内存为 0,则不会缓存对象,因此必须首先设置它。

验证命令

  • 显示缓存统计信息的选项有哪些?

    您可以使用以下选项之一显示缓存的统计信息:

    • stat cache

      显示缓存统计信息的摘要。

    • stat cache –detail

      显示缓存统计信息的完整详细信息。

  • 显示缓存内容的选项是什么?

    要显示缓存的内容,可以运行 show cache object 命令。

  • 我可以运行什么命令来显示存储在缓存中的对象的特征?

    如果存储在缓存中的对象为 GET //10.102.12.16:80/index.html,则可以通过从设备的 CLI 运行以下命令来显示有关该对象的详细信息:

    show cache object -url '/index.html' -host 10.102.3.96 -port 80

  • 是否必须指定组名称作为参数来显示缓存中的参数化对象?

    是。必须将组名称指定为参数,以便在缓存中显示参数化对象。例如,请考虑您已使用相同的规则添加了以下策略:

     add cache policy p2 -rule ns_url_path_cgibin -action CACHE –storeInGroup g1
     add cache policy p1 -rule ns_url_path_cgibin -action CACHE -storeInGroup g2
     <!--NeedCopy-->
    

    在这种情况下,对于多个请求,如果对策略 p1 进行了评估,则其选择计数器会递增,策略将该对象存储在具有选择参数的 g1 组中。因此,您必须运行以下命令才能显示缓存中的对象:

    show cache object -url "/cgi-bin/setCookie.pl" -host 10.102.18.152 groupName g1

    同样,对于另一组多个请求,如果对策略 p2 进行了评估,则其选择计数器将递增,策略将该对象存储在没有选择参数的 g2 组中。因此,您必须运行以下命令才能显示缓存中的对象:

    show cache object -url "/cgi-bin/setCookie2.pl" -host 10.102.18.152

  • 我注意到 nscachemgr 命令的输出中有一些空白条目。这些条目是什么?

    考虑以下 nscachemgr 命令的示例输出。此输出中的空白条目以粗体突出显示,供您参考:

     root@ns# /netscaler/nscachemgr -a
     //10.102.3.89:80/image8.gif
     //10.102.3.97:80/staticdynamic.html
     //10.102.3.97:80/
     //10.102.3.89:80/image1.gif
     //10.102.3.89:80/file5.html
     //10.102.3.96:80/
     //10.102.3.97:80/bg_logo_segue.gif
     //10.102.3.89:80/file500.html
     //10.102.3.92:80/
     //10.102.3.96:80/cgi-bin/rfc/ccProxyReval.pl
     Total URLs in IC = 10
     <!--NeedCopy-->
    

    输出中的空白条目是由于 GET/HTTP/1.1 的默认缓存属性所致。

刷新对象

  • 如何从缓存中刷新选择性对象?

    您可以通过对象的完整 URL 唯一标识对象。要刷新此类对象,可以执行以下任何任务:

    • 刷新缓存
    • 刷新内容组
    • 刷新特定对象

    要刷新特定对象,必须指定查询参数。您可以指定用于刷新对象的 invalParam 参数。此参数仅适用于查询。

  • 缓存配置中的任何更改是否会触发缓存的刷新?

    是。当您更改为缓存配置时,所有 SET 缓存命令本质上会刷新相应的内容组。

  • 我更新了服务器上的对象。我是否需要刷新缓存的对象?

    是。更新服务器上的对象时,必须刷新缓存的对象,或至少刷新相关对象和内容组。集成缓存不受服务器更新的影响。它继续为缓存的对象提供服务,直到它们过期。

闪存缓存

  • 什么是 Citrix ADC 设备的闪存缓存功能?

    当许多客户端访问相同的内容时,就会出现 Flash 人群的现象。结果是流向服务器的流量突然激增。Flash Cache 功能使 Citrix ADC 设备能够通过仅向服务器发送一个请求来提高这种情况下的性能。所有其他请求都在设备上排队,单个响应将提供给请求。您可以使用以下命令之一启用快速缓存功能:

    • add cache contentGroup \<Group_Name> -flashCache YES
    • set cache contentGroup \<Group_Name> -flashCache YES
  • 闪存缓存客户端的限制是多少?

    闪存缓存客户端的数量取决于 Citrix ADC 设备上资源的可用性。

默认行为

  • Citrix ADC 设备是否在过期时主动接收对象?

    Citrix ADC 设备永远不会在到期时主动接收对象。这是真实的,即使对于负面的对象。到期后的第一次访问触发对服务器的请求。

  • 集成缓存是否在开始接收响应之前将客户端添加到队列中以供服务?

    是。集成缓存将客户端添加到队列中,以便在它开始接收响应之前提供服务。

  • 使用缓存配置的参数验证缓存对象的默认值是什么?

    HOSTNAME_AND_IP 是默认值。

  • Citrix ADC 设备是否在日志文件中创建日志条目?

    是。Citrix ADC 设备在日志文件中创建日志条目。

  • 压缩对象是否存储在缓存中?

    是。压缩的对象存储在缓存中。

与其他功能的互操作性

  • 当前存储在缓存中并通过 SSL VPN 访问的对象会发生什么情况?

    存储在缓存中并定期访问的对象将作为缓存,在通过 SSL VPN 访问时进行选择。

  • 当通过 SSL VPN 访问并随后通过常规连接访问时,存储在缓存中的对象会发生什么情况?

    通过常规连接访问时,通过 SSL VPN 访问存储的对象将作为选择。

  • 使用 Web 日志记录时,如何区分表示缓存提供响应的条目和服务器提供的条目?

    对于从集成缓存提供的响应,服务器日志字段包含值 IC。对于从服务器发送的响应,服务器日志字段包含服务器发送的值。以下是集成缓存事务的示例日志条目:

    "10.102.1.52 - "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 4.0; .NET CLR 1.0.3705)" "GET /" 200 0 "IC" 10.102.1.45"

    与客户端请求一起,记录的响应是发送给客户端的响应,而不一定是服务器发送的响应。

注意

使用 Web 日志记录时,集成缓存的响应在服务器日志字段中包含值 IC。服务器日志字段存在于带有 “%o1” 格式说明符的 NSWL 客户端中。

其他

  • 您的配置释放和异常是什么意思?

    通过配置 relexpiryabsexpiry,这意味着无论标题中显示的内容如何,都会覆盖标头。您可以配置不同的到期设置和内容组级别。使用 relexpiry,标头的到期取决于 Citrix ADC 接收对象的时间。使用 absexpiry,过期时间取决于在 Citrix ADC 上配置的时间。 Relexpiry 以秒为单位进行配置。 Absexpiry 是一天中的时间。

  • 您的配置 weakpos 和启发式是什么意思?

    weakpos 和启发式就像回退价值。如果存在过期标头,则只有在最后修改的标头存在时才会考虑该标头。Citrix ADC 设备根据上次修改的标头和启发式参数设置到期时间。启发式过期计算通过检查上次修改的标头来确定到期的时间。自上次修改对象以来的持续时间的一定百分比被用作到期的时间。对象的启发式,该对象在较长时间内保持未修改,并且可能具有较长的到期期。–heurExpiryParam 指定在此计算中使用的百分比值。否则,设备将使用 weakpos 值。

  • 配置动态缓存之前应该考虑什么?

    如果有某个参数以名称-值形式并且没有完整的 URL 查询,或者设备接收到 cookie 标头或 POST 正文中的参数,请考虑配置动态缓存。要配置动态缓存,你必须配置 HitParams 参数。

  • 参数名称中如何支持十六进制编码?

    在 Citrix ADC 设备上,参数名称中支持 %Hexhex 编码。在为 hitParams 或 invalParams 参数指定的名称中,您可以指定名称中包含 %HEXHEX 编码的名称。例如,名称、名称 %65 和 n%61m%65 是等效的。

  • 选择 hitParam 参数的过程是什么?

    考虑 POST 请求的 HTTP 标头的以下摘录:

     POST /data2html.asp?param1=value1&param2=&param3&param4=value4
     HTTP/1.1
     Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,
     application/vnd.ms-powerpoint, application/vnd.ms-excel,
     application/msword, application/x-shockwave-flash, \*/\*
     Referer: http://10.102.3.97/forms.html
     Accept-Language: en-us
     Content-Type: application/x-www-form-urlencoded
     Accept-Encoding: gzip, deflate
     User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
     Host: 10.102.3.97
     Content-Length: 153
     Connection: Keep-Alive
     Cache-Control: no-cache
     Cookie: ASPSESSIONIDQGQGGRNY=NNLLKDADEENOAFLCCDGFGDMO
     S1=This+text+is+only+text%2C+not+more+and+not+less%2C+%0D%0Ajust+text+to+be+itself%2C+namely+%22Text%22+to+be+posted+as+text+%28what+else...%29&B1=Submit
     <!--NeedCopy-->
    

    在前面的请求中,您可以使用 S1 和 B1(以粗体突出显示)作为 HitParams,具体取决于您的要求。此外,如果您在 ASPSESSIONIDQQQGGRNY 内容组中使用-matchCookie 是,那么您也可以将这些参数用作 HitParams。

  • 如果响应不可缓存,排队的客户端会发生什么情况?

    如果响应不可缓存,队列中的所有客户端都会收到与第一个客户端收到的响应相同。

  • 否可以在同一内容组上启用每次轮询 (PET) 和闪存缓存功能?

    否。不能在同一内容组上启用 PET 和闪存缓存。集成缓存不会在 Flash Cache 内容组上执行 AutoPet 功能。PET 功能确保集成缓存不会在没有咨询服务器的情况下为存储的对象提供服务。您可以为内容组显式配置 PET。

  • 何时为排队的客户端创建日志条目?

    日志条目将在设备收到响应标头后不久为排队的客户端创建。只有当响应标头不会使对象不可缓存时,才会创建日志条目。

  • 使用缓存配置的参数验证缓存对象的 DNS、HOSTNAME 和 HOSTNAME_AND_IP 值的含义是什么?

    其含义如下:

    • set cache parameter -verifyUsing HOSTNAME

      该命令忽略目标 IP 地址。

    • set cache parameter -verifyUsing HOSTNAME_AND_IP

      该命令与目标 IP 地址匹配。

    • set cache parameter -verifyUsing DNS

      该命令使用 DNS 服务器。

  • 我已经把 weakNegRelExpiry 设置为 600,也就是 10 分钟。我注意到 404 响应没有被缓存。原因是什么?

    这完全取决于您的配置。默认情况下,404 响应缓存 10 分钟。如果你想从服务器获取所有 404 个响应,请指定 —WeaknegrelexPiry 0。您可以将 —weaknegrelexPiry 调整为所需的值,例如更高或更低,以适当缓存 404 个响应。如果您已为正面响应配置 —absexPiry,那么它可能无法产生预期的结果。

  • 当用户使用 Mozilla Firefox 浏览器访问网站时,会提供更新的内容。但是,当用户通过使用 Microsoft Internet 资源管理器浏览器访问该站点时,将提供过时的内容。可能是什么原因?

    Microsoft Internet 资源管理器浏览器可能从其本地缓存而不是 Citrix ADC 集成缓存中获取内容。原因可能是微软 Internet Explorer 浏览器没有遵守响应中与到期相关的标题。

    若要解决此问题,您可以禁用 Internet Explorer 的本地缓存并清除脱机内容。清除离线内容后,浏览器必须显示更新后的内容。

  • 如果单击量为零,该怎么办?

    检查服务器时间和 NS 时间是否同步。而且 WeakposrelexPiry 限制设置必须承担 NS 和服务器之间的时差,如下所示:

     root@ns180# date
     Tue May 15 18:53:52 IST 2012
     <!--NeedCopy-->
    
  • 为什么策略会得到单击,但没有被缓存?

    验证内存已分配给集成缓存,并且分配大于零。

  • 是否有可能将缓存计数器零?

    没有用于将缓存计数器设置为零的命令行或 GUI 选项,并且刷新缓存也不会这样做。重新启动框会自动将这些计数器设置为零。

集成缓存