为缓存策略和选择器配置表达式
请求时间表达式检查请求时间事务中的数据,响应时间表达式检查响应时间事务中的数据。在缓存策略中,如果表达式与请求或响应中的数据匹配,Citrix ADC设备将执行与策略关联的操作。在选择器中,请求时间表达式用于查找存储在内容组中的匹配响应。
在为集成缓存配置策略和选择器之前,至少需要知道HTTP请求和响应URL中显示的主机名,路径和IP地址。你可能需要知道整个HTTP请求和响应的格式。实时HTTP标头http://livehttpheaders.mozdev.org/)或HTTPFox
https://addons.mozilla.org/en-US/firefox/addon/6647
之类的程序可以帮助您调查组织使用的HTTP数据的结构。
以下是对股票报价计划的HTTP获取请求的示例:
GET /quote.dll?page=dynamic&mode=data&mode=stock&symbol=CTXS&page=multi&selected=CTXS&random=0.00792039478975548 HTTP/1.1 Host: quotes.mystockquotes.com User-Agent: Mozilla/5.0 (Windows;U;Windows NT 5.1;en - us;rv:1.9) Gecko/2008052906 Firefox/3.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,\*/\*;q=0.8 Accept- language: en-us,en;q=0.5 Accept- encoding: gzip,deflate,compress,pack200-gzip Accept- charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: Keep-Alive ref: http://quotes.mystockquotes.com/quote.dll?mode=stock&symbol=CTXS&page=multi&selected=CTXS Cookie: __qca=1210021679-72161677-10297606
配置表达式时,请注意以下限制:
表达式类型 | 限制 |
---|---|
请求 | 请勿使用cache或nocache操作在策略中配置请求时间表达式。改用may_cache或may_nocache。 |
回应 | 仅在缓存策略中配置响应时间表达式。选择器只能使用请求时间表达式,请勿使用inval操作在策略中配置响应时间表达式。注意:请勿使用cache操作和参数化内容组在策略中配置响应时间表达式。使用may_cache操作。 |
注意:有关高级表达式的全面讨论,请参阅策略和表达式。
表达式语法
以下是语法的基本组成部分:
- 用句点 (.) 分隔关键字,如下所示:
http.req.url
- 将字符串值括在括号和引号中,如下所示:
http.req.url.query.contains(“这”)
- 从命令行配置表达式时,必须转义内部引号(用于分隔表达式中值的引号,而不是用于分隔表达式的引号)。一种方法是使用斜杠,如下所示:
\ " abc \ "
选择器表达式按外观顺序进行评估,选择器定义中的多个表达式由逻辑和连接起来。与选择器表达式不同,您可以指定布尔运算符并修改策略规则的高级表达式中的优先级。
在缓存策略或选择器中配置表达式
注意:策略表达式的语法与选择器表达式不同。有关高级表达式的全面讨论,请参阅”策略和表达式”。”
使用命令行界面配置策略表达式
- 按照"全局绑定集成缓存策略"中所述启动策略定义。”
- 要配置策略规则,请用引号分隔整个规则,然后用转义的引号分隔规则中的字符串值。
以下是该命令的一个示例:
“http.req.url.contains(“jpg”)”
- 要添加布尔值,请插入 &&、|| 或!运营商。
以下是示例:
“http.req.url.contains(\“jpg \”)| | http.req.url.contains(\“jpeg \”)”
“http.req.url.query.contains(\“IssuePage \”)”
“http.req.header(\“主机\”)包含(\“my.company.com \”)& & http.req.method.eq(\“\”)& & http.req.url.query.contains(\“v = 7 \”)”
- 配置化合物组成部分的评估顺序
“http.req.url.contains(\“jpg \”)| | (http.req.url.contains(\“jpeg \”)& & http.req.method.eq(\“\”))”
使用命令行界面配置选择器表达式,请执行以下操作:
- 按照"关于内容组"中的描述启动选择器定义。”
- 要配置选择器表达式,请用引号分隔整个规则,然后用转义的引号分隔规则中的字符串值。
以下是该命令的一个示例:
“http.req.url.contains(\“jpg \”)”
- 你不能添加布尔值、插入 &&、|| 或!运营商。输入每个用引号分隔的表达式元素。定义中的多个表达式被视为由逻辑和连接的复合表达式。
以下是示例:
“http.req.url.query.value(“ProductId”)”“http.req.url.query.value(“BatchNum”)”“http.req.url.query.value(“depotLocation”)”<!——NeedCopy >
使用GUI配置策略或选择器表达式
- 按照”使用配置实用程序配置缓存或失效策略”或“使用配置实用程序配置选择器”中所述启动策略或选择器定义。”
- 在表达式字段中,您可以通过单击切换到经典语法手动键入高级策略,也可以使用表达式编辑器创建新表达式。
- 要在复合表达式的两个部分之间插入运算符,请单击运算符按钮并选择运算符类型。以下是具有布尔值的已配置表达式的示例(由双垂直条 || 表示):
- 单击常用表达式下拉列表以插入常用表达式。
- 要测试表达式,请单击”评估”。在“表达式赋值器对话框中,选择与表达式匹配的流程类型。在数据字段中,粘贴希望使用表达式解析的HTTP请求或响应,然后单击评估。
显示缓存的对象和缓存统计信息
您可以查看特定的缓存对象,也可以查看有关缓存请求、未命中和内存使用情况的摘要统计信息。这些统计信息可以深入了解从缓存提供的数据量、哪些项目最大的性能优势以及您可以调整哪些内容以提高缓存性能。
本部分包括以下详细信息:
- 查看缓存的对象
- 查找特定的缓存响应
- 查看缓存统计
查看缓存的对象
启用缓存后,您可以查看缓存对象的详细信息。例如,您可以查看以下项目:
- 响应大小和标题大小
- 状态码
- 内容组
ETag
, Last-Modified和Cache-Control标头- 请求网址
- 点击参数
- 目标IP地址
- 请求和响应时间
使用命令行界面查看缓存对象的列表
在命令提示符下,键入:
显示缓存对象
属性 | 说明 |
---|---|
响应大小(字节) | 响应标题和正文的大小。 |
响应标题大小(字节) | 响应的标题部分的大小。 |
响应状态码 | 随响应一起发送的状态代码。 |
eTag | 在响应中插入的eTag标题。通常,此标头指示响应最近是否发生了更改。 |
上次修改 | 在响应中插入了最后修改的标题。此标头表示响应上次更改的日期。 |
cache - control | 在响应中插入的Cache-Control标头。 |
日期 | 指示响应发送时间的日期标头。 |
内容组 | 存储响应的内容组。 |
复合匹配 | 如果此对象是基于参数化值缓存的,对,则此字段值为。 |
主机 | 请求此响应的url中指定的主机。 |
主机端口 | 请求此响应的url中指定的主机的监听端口 |
URL | 为存储的响应发出的url。 |
目标IP | 从中获取此响应的服务器的IP地址。 |
目的端口 | 目标服务器的监听端口。 |
点击参数 | 如果存储响应的内容组使用点击参数,则会在此字段中列出这些参数。 |
点击选择器 | 如果此内容组使用点击选择器,则会在此字段中列出该内容组。 |
Inval选择器 | 如果此内容组使用失效选择器,则会在此字段中列出该内容组。 |
选择器表达 | 如果此内容组使用选择器,则此字段将显示定义选择规则的表达式。 |
请求时间 | 自发出请求以来的时间(以毫秒为单位)。 |
响应时间 | 自缓存开始接收响应以来的时间(以毫秒为单位)。 |
年龄 | 对象在缓存中存在的时间。 |
到期 | 在此之后,对象被标记为已过期的时间长度。 |
刷新 | 到期后是否刷新了回复。 |
预取 | 如果已为此内容组配置了预回迁,则表示从原始内容组获取对象到期之前的时间长度。预回迁不适用于负面对象(例如,404个"未找到对象"响应)。 |
当前的读者 | 大约是当前正在处理的请求数量。当下载带内容长度有标头对象的响应时,当前未命中值和当前读取器值通常各为1。下载分块响应对象时,当前未命中的值通常为 1,但当前读取器值通常为 0,因为提供给客户端的分块响应不来自集成缓存缓冲区。 |
当前错过 | 导致缓存丢失和从源服务器获取的当前请求数。此值通常为 0 或 1。如果为内容组启用了"每次轮询",则计数可以大于 |
访问量 | 此对象的缓存命中次数。 |
错过 | 此对象的缓存未命中数 |
压缩格式 | 应用于此对象的压缩类型。压缩格式包括 gzip、放气、压缩和 pack200-gzip。 |
响应的HTTP版本 | 用于发送响应的HTTP版本。 |
响应中存在弱的etag | 如果实体的位发生变化,强etag标题会发生变化。强标题基于对象的八位字节值。如果实体的含义发生变化,弱etag标题会发生变化。弱etag值基于语义身份。弱的etags值以“W”开始 |
负面标记细胞 | 标记对象是可缓存的,但尚未满足缓存的所有条件。例如,对象可能会超过内容组的最大响应大小。将为此类型的对象创建一个标记单元格。下次用户发送此对象的请求时,缓存未命中将被处理。 |
创建原因标记 | 创建标记单元格的原因(例如,“等待minhit”,“内容长度响应数据不在组大小限制”)。 |
每次自动轮询 | 如果集成缓存收到已过期的200 OK响应(上次修改或eTag响应标头),它会存储响应并将其标记为自动宠物(每次自动轮询)。 |
Citrix ADC Etag插入响应 | Citrix ADC设备生成的eTag标头的变体。如果Citrix ADC在响应中插入Eag,则显示值为YES。 |
缓存中有完整的响应 | 指示这是否是完整的响应。 |
通过DNS验证的目标IP地址 | 指示存储对象时是否执行了DNS解析。 |
通过缓存转发代理存储的对象 | 指示此响应是否由于集成缓存中配置的转发代理而存储。 |
对象是德尔塔基文件 | 一个被德尔塔压缩的响应。 |
等待minhits | 指示此内容组在缓存响应之前是否需要最少被击中的源服务器数量。 |
Minhit计数 | 如果此内容组在缓存对象之前需要最少数量的源服务器请求,则此字段显示迄今收到的请求数的计数。 |
HTTP请求方法 | 获取此对象的请求中使用的方法获取或post。 |
按策略存储 | 导致存储此对象的缓存策略的名称。值不可用表示该策略已停用或删除。值为无表示对象与可见策略不匹配,但是根据内部缓存标准进行存储。 |
存在应用程序防火墙 | 当应用程序防火墙和集成缓存都启用时,将使用此参数。应用程序防火墙分析响应页面的内容,存储其元数据(例如,页面中包含的 URL 和表单),然后将带响应的元数据导出到缓存。缓存存储页面和元数据,当缓存为页面提供服务时,它会将元数据发送回请求的会话。 |
HTTP标注对象,名称,类型,响应 | 这些单元格表示此数据是否存储为HTTP Callout表达式的结果,并提供有关标注和相应响应的各个方面的信息。有关HTTP标注的更多信息,请参阅" HTTP标注"。 |
使用GUI查看缓存的对象
导航到优化>集成缓存 > 缓存对象。您可以查看所有缓存的对象并根据自己的要求对它们进行相应的排序。
查找特定的缓存响应
您可以根据搜索条件在缓存中找到单个项目。查找缓存项目有不同的方法,具体取决于包含数据的内容组是否使用命中和失效选择器,如下所示:
- 如果内容组使用选择器,则只能使用缓存项目的定位器id进行搜索。
- 如果内容组不使用选择器,则可以使用url,主持人,内容组名称等条件进行搜索。
搜索缓存响应时,您可以通过url和主机查找某些项目。如果响应位于使用选择器的内容组中,则只能通过使用定位器编号(例如0 x00000000ad7af00000050)来查找。要保存定位器编号以供以后使用,请右键单击该条目并选择复制。有关选择器的更多信息,请参阅”配置选择器和基本内容组”。”
使用命令行界面在没有选择器的内容组中显示缓存的响应
在命令提示符下,键入:
show cache object [-locator
使用命令行界面在具有选择器的内容组中显示缓存的响应
在命令提示符下,键入:
show cache object -locator
使用配置实用程序在没有选择器的内容组中显示缓存的响应
导航到优化 > 集成缓存 > 缓存对象,单击搜索,然后设置搜索条件以查看所需的缓存响应。
如果尚未配置任何内容组,则所有对象都位于默认组中。
查看缓存统计
下表总结了您可以查看的详细缓存统计信息。
|计数器|说明| | - | - | |访问量|在集成缓存中找到并从集成缓存中提供的响应。包括静态对象,例如图像文件、状态代码 200、203、300、301、302、304、307、403、404、410 的页面以及与用户定义策略与缓存操作匹配的响应。| |错过|截获的HTTP请求,其中响应最终是从源服务器获取的。| |请求|缓存请求总数加上缓存未命中总数。||非 304 命中|如果用户多次请求项目,并且自 Citrix ADC 设备上次为其提供服务以来,缓存中的项目保持不变,则 Citrix ADC 设备将提供 304 响应而不是缓存对象。 此统计数据显示 Citrix ADC 设备从缓存中提供的项目数量,不包括 304 个响应。| |304 HITS | 304 个(未修改对象)响应 Citrix ADC 设备从缓存中提供的响应。| |304 点击率 (%) | Citrix ADC 设备提供的 304 个响应中相对于其他响应的百分比。| | 命中率 (%) | Citrix ADC 设备从缓存中提供的响应(缓存请求)相对于无法从缓存中提供的响应的百分比。| | 节省的源带宽 (%) | Citrix ADC 设备因提供缓存响应而在源服务器上保存的处理容量的估计值。| | Citrix ADC 设备从源服务器和缓存提供的字节总数 | Citrix ADC 设备提供的字节总数。| | 缓存提供的字节数 | Citrix ADC 设备从缓存中提供的字节总数。| | 字节命中率 (%) | Citrix ADC 设备从缓存中提供的数据占所有服务响应中的所有数据的百分比。| | 来自缓存的压缩字节数 | Citrix ADC 设备以压缩形式提供的数据量(以字节为单位)。| | 可存储的未命中 | 如果 Citrix ADC 设备在缓存中找不到请求的对象,它将从源服务器中获取对象。这被称为缓存未命中。可存储缓存缺失可存储在缓存中。| | 不可存储的错误 | 不可存储的缓存错误不能存储在缓存中。| | 丢失 | 所有缓存未命中。| | 重新验证 | Cache-Control 标头中的 Max-Age 设置确定中间缓存何时必须使用集成缓存重新验证内容,然后再将其提供给用户。 更多信息请参阅 “插入缓存控制标头。“| | 成功的重新验证 | 已执行的重新验证数量。 有关详细信息,请参阅“插入 Cache-Control 标头”。“| | 转换为条件 ReQ| 缓存 PET 对象的用户代理请求始终转换为条件请求并发送到源服务器。 有关更多信息,请参阅 “每次收到请求时轮询源服务器。“| | 可存储丢失率 (%) | 可存储缓存未命中占不可存储缓存未命中的百分比。| | 成功的重新验证率 (%) | 成功重新验证占所有重新验证尝试的百分比。 更多信息请参阅 “插入缓存控制标头。“| | 最后一个字节过期 | 缓存在收到最后一个正文字节后立即过期内容的次数。仅适用于积极响应,如表中所述“缓存命中和未命中”。“ 有关更多信息,请参阅 “性能优化示例。“| |Flashcache
错过|如果启用Flash缓存,缓存只允许一个请求到达服务器,从而消除了闪存人群。此统计数据指示缓存未命中的闪存缓存请求数。有关更多信息,”将请求排队到缓存。“| |FlashCache Hits | 缓存命中率的闪存缓存请求数。 更多信息请参阅 “将请求排队到缓存。“| | 参数化的无效请求 | 与失效 (INVAL) 操作的策略和使用失效选择器或参数有选择性地过期组中缓存对象的内容组相匹配的请求。| | 完全无效请求 | 与配置了 invalGroups 参数并过期一个或多个内容组的无效策略匹配的请求。| |Inval Requests| 与失效策略相匹配并导致特定缓存响应或整个内容组过期的请求。| | 参数化请求 | 使用具有参数化内容组的策略处理的缓存请求数。| | 参数化非 304 HITS| 使用具有参数化内容组的策略处理的缓存请求数,其中找到了完整的缓存响应,响应不是 304(未更新对象)响应。| | 参数化 304 HITS| 使用具有参数化内容组的策略处理的缓存请求数,其中找到了缓存对象,对象是 304(未更新对象)响应。| | 参数化 HITS| 使用具有参数化内容组的策略处理的缓存请求数(在其中找到缓存对象)。| | 参数化 304 命中率 (%) | 使用参数化策略找到的 304 个(对象未更新)响应的百分比,相对于所有缓存命中率。| | 每次请求时轮询 | 如果启用了 “每次轮询”,Citrix ADC 设备在提供存储的对象之前始终会咨询源服务器。 有关更多信息,请参阅 “每次收到请求时轮询源服务器。“| | 每次 Poll Poll | 使用 “每次轮询” 方法找到缓存命中的次数。 有关更多信息,请参阅 “每次收到请求时轮询源服务器。“| | 轮询每次命中率 (%) | 使用 Poll All Time 方法的缓存命中率百分比,相对于使用 Poll All Time 对缓存对象的所有搜索。有关详细信息,请参阅“每次收到请求时轮询源服务器”。“| | 最大内存 (KB) | Citrix ADC 设备中分配给缓存的最大内存量。更多信息请参阅 “为缓存配置全局属性。“| | 最大内存活动值 (KB) | 将内存分配给缓存后设置的最大内存量(活动值)。有关详细信息,请参阅“如何为各种方案配置 Citrix ADC 设备的集成缓存功能。“| | 利用内存 (KB) | 实际使用的内存量。 | | | 内存分配失败 | 为在缓存中存储响应而利用内存的失败尝试次数。 | | 迄今为止最大响应 | 在缓存或源服务器中找到并发送到客户端的最大响应(以字节为单位)。 | | 缓存对象 | 缓存中的对象数量,包括尚未完全下载的响应和已过期但尚未刷新的响应。 | | 标记对象 | 当响应超过内容组的最大或最小响应大小,或者尚未收到内容组的最小点击次数时,将创建标记对象。 | | 正在提供的点击 | 已从缓存提供的点击次数。 | | 正在处理的未命中 | 从源服务器获取、存储在缓存中然后提供的响应。应该接近可存储错误的数量。不包括不可储存的错过。|
使用命令行界面查看摘要缓存统计信息:
在命令提示符下,键入:
stat缓存
使用命令行界面查看特定的缓存统计信息:
在命令提示符下,键入:
stat缓存细节
>属性缓存细节集成缓存统计数据-细节集成缓存统计数据总结率(/ s)总打0 0失误0 0请求0 0命中率(%)——0起源带宽(%)保存缓存的对象——0标记对象——0利率(/ s)总请求0 0点击统计率(/ s)总非304支安打Sql达到0 0 0 304的点击量0 0 0 0 0 304支安打命中率(%)——0命中率(%)起源带宽(%)——保存0字节数据率(/ s)总字节由Citrix ADC 648 55379204字节由0 0字节缓存命中率(%),从缓存压缩字节0 0小姐统计率(/ s)总存储了0 0 Non-storable错过0 0 0 0重新生效0 0穆斯林成功重新生效0 0转换条件要求0 0耐贮藏的小姐比(%)——成功的瑞威尔比率(%)——0 Flashcache统计率(/ s)总到期最后一个字节0 0 0 0 Flashcache Flashcache未击中0 0失效统计率(/ s)总参数化inval请求0 0全inval请求0 0 0 0 Inval请求参数化缓存统计数据率(/ s)总参数化请求0 0参数化的非304的点击量0 0参数化304支安打总参数化达到0 0 0 0参数化304命中率(%)——0每次民意调查(PET)统计率(/ s)总调查每次请求调查每次打0 0调查每一次命中率(%)——0内存使用统计总最大内存(KB) 0最大内存活跃值(KB) 0利用内存(KB) 0 0内存分配失败到目前为止最大的响应(B) 0缓存对象0标记对象0命中服务0未命中处理0完成
使用GUI查看摘要缓存统计信息
- 单击页面顶部的仪表板选项卡。
- 向下滚动到窗口的集成缓存部分。
- 要查看详细的统计信息,请单击表格底部的“更多…”链接。
使用GUI查看特定的缓存统计信息
- 单击页面顶部的”报告选项卡。
- 在"内置报表"下,展开"集成缓存,然后单击包含要查看的统计信息的报表。
- 要将报告另存为模板,请单击另存为并命名报告。保存的报告将显示在自定义报告下。