集成缓存
内容组织
DEFAULT内容组与其他内容组有什么不同?
DEFAULT内容组的行为与任何其他组相同。使DEFAULT内容组特殊的唯一属性是,如果正在缓存对象并且没有创建内容组。对象缓存在DEFAULT组中。
内容组级别的“cache-Control”选项是什么?
您可以向浏览器发送任何缓存控制头。有一个内容组级别的选项-cacheControl,它使您能够指定希望在对浏览器的响应中插入的缓存控制头。
什么是内容组级别的“Minhit”选项?
Minhit
是一个整数值,指定在缓存对象之前对缓存策略进行选择的最小次数。该值可在内容组级别进行配置。下面是在CLI中配置该值的语法。add/set cache contentGroup \
[-minHits \ ] expireAtLastByte选项的用途是什么?
expireAtLastByte选项使集成缓存在对象被下载时过期。只有当时未完成的请求才从缓存中提供服务。任何新的请求都被发送到服务器。当对象经常被修改时,如股票报价时,此设置很有用。此过期机制与Flash Cache功能一起工作。配置expireAtLastByte选项,在CLI中执行如下命令:
添加缓存contentGroup \
-expireAtLastByte是
缓存策略
什么是缓存策略?
策略决定哪些事务可缓存,哪些不可缓存。此外,策略添加或覆盖标准的HTTP缓存行为。策略根据请求或响应的特定特征确定操作,例如CACHE或NOCACHE。如果响应符合策略规则,则将响应中的对象添加到策略中配置的内容组中。如果未配置内容组,则将该对象添加到DEFAULT内容组中。
什么是政策打击?
当请求或响应匹配缓存策略时,将发生选择。
什么是错过?
当请求或响应与任何缓存策略不匹配时,将发生miss。如果请求或响应匹配缓存策略,但RFC行为的某些覆盖阻止对象存储在缓存中,也可能发生失败。
我已经配置了Citrix ADC设备的集成缓存功能。在添加以下策略时,出现错误消息。命令中有错误吗?
添加cache策略image_caching -rule exp1 | ns_ext_not_jpeg -action cache
\> ERROR: No such command
在上述命令中,表达式必须在引号内。没有引号的操作符被认为是管道操作符。
内存需求
我可以在Citrix ADC设备上运行哪些命令来检查分配给缓存的内存?
要在Citrix ADC设备中显示为缓存分配的内存,请在CLI中运行以下命令:
显示缓存参数
在回显信息中,查看“Memory usage limit”参数的值。这是为缓存分配的最大内存。
show cache \
在输出中,检查Memory usage和Memory usage limit参数的值,这些参数表示为各个内容组使用和分配的内存。
我的Citrix ADC设备有2 GB内存。有没有推荐的缓存内存限制?
对于任何型号的Citrix ADC设备,都可以将一半的内存分配给缓存。但是,由于内部内存依赖,Citrix建议分配略少于一半的内存。运行命令为cache分配1gb的内存。
设置cache参数-memLimit 1024
是否有可能为单个内容组分配内存?
是的。尽管您可以通过运行set cache参数-memlimit
全局地为集成缓存分配内存,但是您可以通过运行set cache -memlimit 命令为单个内容组分配内存。可以分配给内容组(组合)的最大内存不能超过分配给集成缓存的内存。 集成缓存和TCP缓冲区之间的内存依赖关系是什么?
如果Citrix ADC设备有2 GB内存,那么该设备保留大约800 MB到900 MB的内存,剩余的内存分配给FreeBSD操作系统。因此,您最多可以为集成缓存分配512 MB的内存,其余的内存分配给TCP缓冲区。
如果我不将全局内存分配给集成缓存,是否会影响缓存进程?
如果不为集成缓存分配内存,则所有请求都将发送到服务器。要确保已为集成缓存分配内存,请执行show cache parameter命令。实际上,如果全局内存为0,则不会缓存任何对象,因此必须首先设置它。
验证命令
有哪些选项可以显示缓存统计信息?
您可以使用以下任意一种选项显示缓存的统计信息:
stat缓存
显示缓存统计信息的摘要。
Stat cache -detail
显示缓存统计信息的完整详细信息。
显示缓存内容的选项有哪些?
要显示缓存的内容,可以运行
显示缓存对象
命令。我可以运行什么命令来显示存储在缓存中的对象的特征?
例如,如果缓存中的对象是GET //10.102.12.16:80/index.html,则可以在一体机的CLI中执行以下命令显示该对象的详细信息:
显示缓存对象-url '/index.html' -host 10.102.3.96 -port 80
是否必须指定组名作为参数来显示缓存中的参数化对象?
是的。必须指定组名作为参数,以显示缓存中的参数化对象。例如,假设您使用相同的规则添加了以下策略:
添加cache策略p2 -rule ns_url_path_cgibin -action cache -storeInGroup g1添加cache策略p1 -rule ns_url_path_cgibin -action cache -storeInGroup g2
在这种情况下,对于多个请求,如果评估策略p1,则其选择计数器增加,并且策略将对象存储在g1组中,g1组具有选择参数。因此,必须执行以下命令来显示缓存中的对象:
show cache object -url "/cgi-bin/setCookie.pl" -host 10.102.18.152 groupName g1
类似地,对于另一组多个请求,如果计算策略p2,则其选择计数器增加,并且策略将对象存储在g2组中,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/ /10.102.3.97:80/ /10.102.3.89:80/ staticdynamic.html //10.102.3.97: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 IC中的总url = 10
输出中的空白项是由于GET / HTTP/1.1的默认缓存属性。
冲洗对象
如何从缓存中刷新选定对象?
您可以通过完整的URL唯一地标识对象。要清除这样的对象,可以执行以下任何任务:
- 刷新缓存
- 刷新内容组
- 冲洗特定对象
要清除特定对象,必须指定查询参数。指定invalParam参数来刷新对象。该参数只适用于查询。
缓存配置中的任何更改是否会触发缓存刷新?
是的。当更改为缓存配置时,所有SET缓存命令都会刷新相应的内容组。
我已经更新了服务器上的对象。是否需要刷新缓存的对象?
是的。更新服务器上的对象时,必须刷新缓存的对象,或者至少刷新相关对象和内容组。集成缓存不受服务器更新的影响。它继续为缓存的对象提供服务,直到它们过期。
闪存缓存
Citrix ADC设备的Flash Cache特性是什么?
当许多客户端访问相同的内容时,就会出现快闪人群现象。结果是对服务器的流量突然激增。Flash Cache特性使Citrix ADC设备能够通过仅向服务器发送一个请求来提高这种情况下的性能。所有其他请求都在设备上排队,并为请求提供单个响应。您可以使用以下命令中的任意一个来启用快速缓存特性:
添加缓存contentGroup \
-flashCache YES set cache contentGroup \
-flashCache YES
Flash Cache客户端的限制是什么?
Flash Cache客户端的数量取决于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(兼容;MSIE 6.0;Windows NT 4.0;.net CLR 1.0.3705)" get /" 200 0 " ic " 10.102.1.45"
与客户机请求一起,记录的响应是发送到客户机的响应,而不一定是服务器发送的响应。
请注意
当使用web日志记录时,来自集成缓存的响应在服务器日志字段中包含值IC。服务器日志字段以“% 01”格式说明符出现在NSWL客户端中。
杂项
您所说的配置释放和缺席是什么意思?
通过配置
relexpiry
和absexpiry
,这意味着无论标题中出现什么内容,都要重写标题。您可以配置不同的过期设置和内容组级别。与relexpiry
,报头的过期时间取决于Citrix ADC接收到对象的时间。与absexpiry
,过期时间基于Citrix ADC上配置的时间。Relexpiry
以秒为单位配置。Absexpiry
是一天中的一段时间。配置弱点和启发式是什么意思?
的
weakpos
启发式就像后备值。如果存在过期标头,则仅在最后修改的标头存在时才考虑过期标头。Citrix ADC设备根据最后修改的报头和启发式参数设置过期。启发式过期计算通过检查最后修改的标头来确定到期时间。自上次修改对象以来的持续时间的一定百分比用作到期时间。对一个对象的启发,该对象在较长时间内保持不变,并且可能有较长的失效期限。heurexpiryparam指定在此计算中使用的百分比值。否则,设备将使用weakpos
价值。在配置动态缓存之前,我应该考虑什么?
如果有一些参数是名称-值形式的,并且没有完整的URL查询,或者设备在cookie头或POST主体中接收参数,请考虑配置动态缓存。要配置动态缓存,必须配置hitParams参数。
参数名称中如何支持十六进制编码?
在Citrix ADC设备上,参数名中支持%HEXHEX编码。在为hitParams或invalParams指定的名称中,您可以指定名称中包含%HEXHEX编码的名称。例如,name、name%65和n %61m%65是等价的。
选择hitParam参数的过程是什么?
考虑下面这段POST请求的HTTP报头:
POST / data2html.asp吗?HTTP/1.1接受:image/gif、image/x-xbitmap、image/jpeg、image/pjpeg、application/vnd。女士powerpoint、应用程序/盾。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(兼容;MSIE 6.0;Windows NT 5.1)主机: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+即+%22Text%22+to+be+post +as+text+%28what+else…% b1 = 29日提交< !——NeedCopy >
在前面的请求中,您可以根据需要使用S1和B1(以粗体突出显示以供参考)作为hitParams。此外,如果您在ASPSESSIONIDQGQGGRNY内容组中使用-matchCookies YES,那么您也可以将这些参数用作hitParams。
如果响应不可缓存,排队的客户端会发生什么?
如果响应不可缓存,则队列中的所有客户端都会收到与第一个客户端接收的响应相同的响应。
我可以在同一内容组上启用每次投票(PET)和Flash缓存功能吗?
不。同一内容组不能同时启用PET和Flash Cache。集成缓存不会对Flash缓存内容组执行自动读取功能。PET特性确保集成缓存在不咨询服务器的情况下不会为存储对象提供服务。您可以为内容组显式地配置PET。
什么时候为排队的客户机创建日志条目?
在设备接收到响应标头后不久,将为排队的客户机创建日志条目。只有当响应头没有使对象不可缓存时,才会创建日志项。
缓存配置中“使用校验缓存对象”参数的“DNS”、“HOSTNAME”和“HOSTNAME_AND_IP”的取值含义是什么?
其含义如下:
设置缓存参数-verifyUsing HOSTNAME
该命令忽略目的IP地址。
设置缓存参数-verifyUsing HOSTNAME_AND_IP
该命令与目的IP地址匹配。
设置缓存参数-verifyUsing DNS
该命令使用DNS服务器。
我将weakNegRelExpiry设置为600,也就是10分钟。我注意到404响应没有被缓存。原因是什么?
这完全取决于您的配置。默认情况下,404响应缓存10分钟。如果您希望从服务器获取所有404响应,指定为weaknegrelexpiry 0。您可以将-weakNegRelExpiry微调到所需的值,例如更高或更低,以获得适当缓存的404响应。如果您为正响应配置了-absExpiry,那么它可能不会产生期望的结果。
当用户使用Mozilla Firefox浏览器访问站点时,将提供更新后的内容。但是,当用户使用Microsoft Internet Explorer浏览器访问该站点时,提供的是过时的内容。原因是什么呢?
Microsoft Internet Explorer浏览器可能会从本地缓存中获取内容,而不是从Citrix ADC集成缓存中获取内容。原因可能是Microsoft Internet Explorer浏览器不尊重响应中的过期相关标头。
您可以关闭ie浏览器的本地缓存,清除离线内容。清除离线内容后,浏览器必须显示更新后的内容。
如果点击率为零呢?
检查服务器时间和nstime是否同步。weakPosrelexpiry限制设置必须承受NS与服务器之间的时间差,如下所示:
root@ns180\# date 5月15日星期二18:53:52 IST 2012
为什么策略有点击,但没有缓存?
验证已将内存分配给集成缓存,并且分配大于零。
是否有可能将缓存计数器归零?
没有命令行或GUI选项可以将缓存计数器设置为零,刷新缓存也不会这样做。重新启动机器会自动将这些计数器设置为零。