Citrix ADC

配置缓存和失效策略

策略使集成缓存能够确定是否尝试使用缓存或原点的响应。NetScaler设备提供集成缓存的内置策略,您可以配置更多策略。配置策略时,您将其与操作相关联。操作要么缓存策略适用或无效(到期)对象的对象。通常,您基于GET和POST请求中的信息的缓存策略。您通常在请求中存在POST方法的基本策略以及其他信息。您可以在缓存或无效策略中使用Get或Post请求中的任何信息。

您可以在配置实用程序中查看集成缓存的policies节点中的一些内置策略。内置的策略名称以下划线(_)开头。

动作决定了当流量匹配策略时NetScaler设备做什么。以下操作是可用的:

  • 缓存行为.与CACHE操作关联的策略将响应存储在缓存中,并从缓存提供响应。
  • 无效行动.与INVAL操作关联的策略会立即使缓存的响应过期,并从源服务器刷新它们。对于基于web的应用程序,无效策略通常评估POST请求。
  • “不要缓存”操作.与NOCACHE操作关联的策略永远不会在缓存中存储对象。
  • 临时缓存操作.与MAYCACHE或MAYNOCACHE操作关联的策略取决于更多策略评估的结果。

虽然集成缓存不存储锁定方法指定的对象,但您可以在收到a时使缓存对象无效要求。仅用于无效策略,您可以指定作为使用表达式的方法http.req.method.eq(“锁”).不同的政策得到帖子请求时,必须将LOCK方法用引号括起来,因为NetScaler设备只能将该方法名识别为字符串。

创建策略后,将其绑定到请求和响应的整体处理中的特定点。虽然您在绑定之前创建策略,但您必须了解绑定点如何在创建策略之前影响处理顺序。

绑定到特定绑定点的策略构成一个策略银行。可以使用goto表达式修改策略银行中的执行顺序。您还可以调用其他策略银行中的策略。此外,您还可以创建标签并为其绑定策略。这样的标签与处理点没有关联,但是绑定到它的策略可以从其他策略银行调用。

与集成缓存策略关联的操作

下表描述了集成缓存策略的操作。

行动 规格
缓存 如果响应未过期,请服务于缓存中的响应。如果必须从原始服务器获取响应,则NetScaler设备在服务之前缓存响应。甚至可以缓存更新和访问的数据甚至可以缓存。例如,股票报价经常更新,但可以缓存,以便它们可以快速向多个用户提供服务。如有必要,可以在下载后立即刷新缓存数据。可以通过内置策略覆盖缓存操作。
NOCACHE 始终从源服务器获取响应,并将响应标记为不可存储。通常为敏感数据或个性化数据配置NOCACHE策略。
MAY_CACHE 在请求时间策略中使用,此设置可暂时启用要存储在内容组中的响应,待定响应时间策略。以下是可能的:1。如果匹配响应时间策略具有缓存操作但未指定内容组,则响应存储在默认组中,除非内置策略覆盖此策略。2.如果匹配响应时间策略具有缓存操作并指定与请求时间策略中的内容组相同的内容组,则响应存储在命名内容组中,除非内置策略覆盖此策略。3.如果匹配响应时间策略具有缓存操作,但是从请求时间策略中的一个中指定不同的内容组,则应用NoCache操作。4.如果匹配响应时间策略具有NoCache操作,请执行NoCache操作。5.如果没有匹配响应时间策略,则应用缓存操作,除非内置策略覆盖此策略。
MAY_NOCACHE 对于请求时间策略,此设置暂时阻止缓存响应。在响应时间,会采取以下操作之一:—如果没有响应时间策略匹配请求,最后的操作是NOCACHE。—如果匹配的响应时间策略包含CACHE动作,则最终动作为CACHE,除非内置策略覆盖该策略。—如果匹配的响应时间策略中包含NOCACHE动作,则最终动作为NOCACHE。-如果一个匹配的响应时间策略有一个CACHE动作,但是没有指定一个内容组,最后的动作是在Default内容组中缓存响应,除非内置的策略覆盖这个策略。
inv 过期缓存响应。根据策略和内容组的配置方式,一个或多个内容组中的所有响应都将过期,或内容组中的选定对象将过期。注意:您只能在请求时间策略中指定INVAL操作。

为策略绑定点

您可以将策略绑定到以下绑定点之一:

  • 全球性的政策银行.这些是请求时间默认、请求时间覆盖、响应时间默认和响应时间覆盖策略银行,如“政策评估顺序.”
  • 虚拟服务器.绑定到虚拟服务器的策略在全局覆盖策略之后和全局默认策略之前处理,如“政策评估顺序当将策略绑定到虚拟服务器时,您将其绑定到请求时间处理或响应时间处理。
  • 临时策略标签.策略标签是分配给策略银行的名称。除了全局标签外,集成缓存还有两个内置自定义策略标签:
    • _reqBuiltinDefaults。默认情况下,从请求时默认策略银行调用此策略标签。
    • _resBuiltinDefaults。默认情况下,从响应时间默认策略银行调用此策略标签。

您还可以定义新的策略标签。绑定到用户定义策略标签的策略必须在一个内置绑定点的策略银行中调用。

重要的是:您必须将策略绑定到请求时间覆盖或响应时间覆盖绑定点的策略。要删除策略,必须首先揭示它。

政策评价次序

对于生效的高级策略,您必须确保在NetScaler设备的流量处理的某些时候调用策略。要指定调用时间,请将策略与绑定点关联。以下是绑定点,按评估顺序列出:

  • 请求时间覆盖.如果请求命中了请求时间覆盖策略,默认情况下,请求时间策略评估结束,NetScaler设备存储与匹配策略相关联的动作。
  • 请求时间负载平衡虚拟服务器.如果在评估完所有请求时间覆盖策略后,仍然无法完成策略评估,NetScaler设备将处理绑定在负载均衡虚拟服务器上的请求时间策略。如果请求匹配其中一个策略,则结束评估,NetScaler设备存储与匹配策略相关联的动作。
  • 请求时内容切换虚拟服务器.绑定到此绑定点的策略在绑定到负载均衡虚拟服务器的请求时间策略之后进行评估。
  • 请求时默认.如果在所有请求时间、虚拟服务器特定的策略都被评估之后,策略评估仍未完成,NetScaler设备将处理请求时间默认策略。如果请求命中了请求时间缺省策略,默认情况下,请求时间策略评估结束,NetScaler设备存储与匹配策略相关联的动作。
  • 响应时间覆盖.类似于请求时间覆盖策略评估。
  • 响应时间负载平衡虚拟服务器.类似于请求时虚拟服务器策略评估。
  • 响应时间内容切换虚拟服务器.类似于请求时虚拟服务器策略评估。
  • 响应时间违约. 类似于请求时间默认策略评估。

可以将多个策略与每个绑定点关联。要控制与绑定点关联的策略的评估顺序,可以配置优先级级别。在没有任何其他流控制信息的情况下,将根据优先级级别(从最低的数字优先级值开始)评估策略。

注意:POST数据或cookie头的请求时策略必须在请求时重写计算期间调用,因为集成缓存中的内置请求时策略返回NOCACHE为POST请求和一个MAY_NOCACHE使用cookie请求的动作。你会把MAY_CACHEMAY_NOCACHE具有指向参数化内容组的请求时间策略的操作。响应时间策略决定事务是否存储在缓存中。

配置集成缓存策略

您可以配置新的策略来处理内置策略无法处理的数据。您可以为缓存、防止缓存发生和使缓存数据失效配置单独的策略。以下是集成缓存策略的主要组件:

  • 规则:计算HTTP请求或响应的逻辑表达式。
  • 操作:将策略与操作关联,以确定如何处理匹配策略规则的请求或响应。

内容组:将策略与一个或多个内容组相关联,以标识要在何处执行操作。

使用命令行接口配置缓存策略

在命令提示符处,输入:

添加缓存策略 -rule -actionCache | May_Cache | Nocache | May_Nocache [-Storeingroup ] [ - -undefaction nocache |重置]添加缓存策略image_cache -rule "http.req.url.contains(\" jpeg\")"-action CACHE -storeingroup myImages_group

添加缓存策略bugReportPolicy -rule "http.req.url.query.contains(\"IssuePage\")"-action CACHE -storeInGroup bugReportGroup

添加缓存策略my_form_policy -rule "http.req.header(\"Host\")contains(\"my.company.com\") && http.req.method.eq(\"GET\") && http.req.url.query.contains(\"v=7\")"-action CACHE -storeInGroup my_form_event

添加缓存策略viewproducts_policy -rule "http.req.url.contains(\" viewproducts_aspx \")"-action CACHE -storeInGroup Product_Details

使用命令行界面配置无效的策略

在命令提示符处,输入:

添加缓存策略 -rule <表达式> -action inval [-invalobjects“\  [,”]。.。]] |[-invalgroup \  [,。.。]] [ -  -undefaction nocache | RESET] <! - 需要 - >
添加缓存策略invalidation_events_policy -rule "http.req.header("Host")contains("my.company.com") && http.req.method.eq("GET") && http.req.url.query.contains("v=8") -action INVAL - invalidation_event -undefaction NOCACHE 
添加缓存策略inval_all -rule "http.req.method.eq("POST") && http.req.url.contains("jpeg")"-action INVAL -invalGroups myImages_group myApps_group PDF_group 
添加缓存策略bugReportInvalidationPolicy -rule "http.req.url.query.contains(\"TransitionForm\")"-action INVAL -invalObjects bureport ' ' > add cache policy editproducts_policy -rule "http.req.url.contains(\"editproducts.aspx\")""Product_Details,batchnum_sel" "Products_In_Depots,batchid_sel" 

使用GUI配置用于缓存或无效的策略

导航到优化>集成缓存>政策,并创建新策略。

全球绑定集成缓存政策

当全局绑定策略时,它对NetScaler设备上的所有虚拟服务器都可用。

使用命令行接口全局绑定集成缓存策略:

在命令提示符处,输入:

bind cache global  -priority  [-typeREQ_OVERRIDE|REQ_DEFAULT|RES_OVERRIDE|RES_DEFAULT] [-gotoPriorityExpression ] [-invoke  ] 
绑定缓存全局myCachePolicy -priority 100 -type req_default 

注意:

类型参数是全局绑定策略的可选,以保持与使用早期版本的NetScaler设备定义的策略的向后兼容性。如果省略该类型,则策略绑定到req_default或res_default,具体取决于策略规则是响应时间还是请求时间表达式。如果该规则包含请求时间和响应时间参数,则绑定到RES_DEFAULT。以下是省略类型的绑定的示例

下面是省略类型的绑定示例。

>绑定缓存全局MyCache策略200

使用配置实用程序全局绑定集成的缓存策略

导航到优化>集成缓存, 点击缓存策略经理通过指定相关绑定点和连接类型(请求/响应)来绑定策略。

将集成缓存策略绑定到虚拟服务器

当您将策略绑定到虚拟服务器时,它仅对匹配策略并流经相关虚拟服务器的请求和响应可用。

使用GUI时,可以使用虚拟服务器的“配置”对话框绑定策略。这使您可以查看从绑定到此虚拟​​服务器的所有Citrix ADC模块的所有策略。你也可以使用策略管理器配置对综合缓存的对话框。这使您只能查看绑定到虚拟服务器的集成缓存策略。

使用命令行绑定集成缓存策略到虚拟服务器。

在命令提示符处,输入:

bind lb vserver @ -policyName  -priority  -type(REQUEST|RESPONSE) 
绑定cs vserver  @ -policyname  -priority  -type(请求|响应)<! -  caltcopy  - >

通过使用配置实用程序(虚拟服务器方法)将集成缓存策略绑定到虚拟服务器

  • CS虚拟服务器-导航到交通管理>内容交换>虚拟服务器,选择虚拟服务器,绑定相应的缓存策略。
  • LB虚拟服务器-导航到流量管理>负载均衡>虚拟服务器,选择虚拟服务器,绑定相应的缓存策略。

使用GUI(策略管理器方法)将集成缓存策略绑定到虚拟服务器。

导航到优化>集成缓存, 点击缓存策略经理,通过指定相关的绑定点和连接类型来绑定缓存策略。

注意:通过选择适当的绑定点,可以将缓存策略绑定到负载均衡虚拟服务器和内容切换虚拟服务器。

如何缓存压缩和未压缩版本的文件

默认情况下,可以处理压缩的客户端可以使用gzip、deflate、compress和pack200-gzip格式的未压缩响应或压缩响应。如果客户端处理压缩,则接受编码:压缩格式报头在请求中发送。客户端接受的压缩类型必须与缓存对象的压缩类型匹配。例如,一个cached.gzip文件不能在响应请求时使用接受编码:放气头。

如果缓存的响应被压缩,则无法处理压缩的客户端将被服务于缓存丢失。

对于动态缓存,您需要配置两个内容组,一个用于相同数据的压缩版本,另一个用于相同数据的未压缩版本。下面是一个配置选择器、内容组和策略的示例,用于将缓存中的未压缩文件提供给无法处理压缩的客户端,并将相同文件的压缩版本提供给能够处理压缩的客户端。

添加缓存选择器uncompressed_response_selector http.req.url "http.req.header(\"Host\")"

添加缓存内容组uncompressed_group -hitSelector uncompressed_responst_selector -invalSelector uncomp_resp_sel

添加缓存策略cache_uncompress -rule“http.req.url.contains(\”xyz \“)&&!http.req.header(\”接受编码\“)。存在”-action cache -storeingroup unsultured_group

绑定缓存全局缓存\u未压缩-优先级100-gotoPriorityExpression结束-类型请求\u覆盖

添加缓存选择器compressed_response_selector HTTP.REQ.URL "HTTP.REQ.HEADER(\"Host\")"“HTTP.REQ.HEADER(\“接受编码\”)”

添加缓存contentGroup compressed_group -hitSelector compressed_response_selector

添加缓存策略cache_compress -rule“http.req.url.contains(\”xyz \“)&& http.req.header(\”接受编码\“)。存在”-action cache -storeingroup roupt_group

bind cache global cache_compressed -priority 200 -gotoPriorityExpression结束类型REQ_OVERRIDE

为缓存配置策略银行

与特定绑定点相关联的所有策略都是统称为策略库。除了在银行中的策略配置优先级之外,您还可以通过配置Goto表达式来修改银行中的评估顺序。您可以通过从当前策略库中调用外部策略库来进一步修改评估顺序。您还可以配置新的策略银行,您可以为其分配您自己的标签。因为此类策略银行不受处理周期中的任何一点,所以可以仅从其他策略银行内部调用它们。为方便起见,标签不对应于内置绑定点的策略库称为策略标签。

除了通过绑定策略和分配优先级级别来控制策略评估的顺序,如“绑定政策,您可以通过配置Goto表达式在策略库中建立流。Goto表达式覆盖由优先级确定的流。您还可以在评估当前银行中的条目后,通过调用外部策略银行来控制评估流。评估完成后,评估始终返回到当前银行。

下表总结了在策略银行中控制评估的条目。

属性 指定
的名字 策略的名称,或者,要调用另一个策略库而不评估策略,请使用关键字NOPOLICY。您可以在策略库中多次指定NOPOLICY,但只能指定一次命名策略。
优先事项 一个整数。整数越低,优先级越高。
后藤表达式 确定下一策略或策略银行进行评估。您可以提供以下值之一:1。下一个:使用下一个更高的优先级转到策略。2.结束:停止评估。3. USE_INVOCATION_RESULT:如果此条目调用另一个策略银行,则适用。如果调用的银行中的最终转到具有结束的值,则评估停止。如果最终转到以外的任何东西,则当前策略银行执行下一步。4.正数:要评估的下一个策略的优先级编号。5.数字表达式:生成要评估的下一个策略的优先级编号的表达式。Goto只能在策略银行前进。省略GOTO表达式与指定结束相同。
调用类型 指定策略银行类型。该值可以是以下之一 - 1.请求虚拟服务器:调用与虚拟服务器关联的请求时间策略。2.响应虚拟服务器:调用与虚拟服务器关联的响应时间策略。3.策略标签:调用另一家政策银行,由银行的策略标签标识。
调用的名称 虚拟服务器或策略标签的名称,这取决于您为调用类型指定的值。

集成缓存具有两个内置策略标签,您可以配置更多策略标签:

_reqBuiltInDefaults:从请求时默认绑定点调用此策略标签。_resBuiltInDefaults:此策略标签从响应时默认绑定点调用。

使用命令行接口调用缓存策略库中的策略标签

在命令提示符处,输入:

bind cache policylabel  - policyName  -priority [-gotoPriorityExpression ] [-invoke  ] 

使用GUI调用缓存策略库中的策略标签:

  1. 导航到优化>集成缓存, 点击缓存策略经理,并指定相关绑定点(Override Global或Default Global)和连接类型,以查看绑定到此绑定点的策略列表。

  2. 如果希望在不评估策略的情况下调用策略标签,请单击NOPOLICY

注意:

要调用外部策略银行,请单击“调用类型”列中的“字段”,然后在“策略库”中选择要调用的策略库类型。这可以是全局标签或虚拟服务器库。在“调用名称”字段中,输入标签或虚拟服务器名称。

使用命令行接口在虚拟服务器策略库中调用缓存策略标签

在命令提示符处,输入:

bind lb vserver @ -policyName | -priority -gotoPriorityExpression  -type REQUEST|RESPONSE -invoke  
bind cs vserver  -policyName | -priority -gotoPriorityExpression  -type REQUEST|RESPONSE -invoke  

通过使用GUI调用虚拟服务器策略库中的缓存策略标签

  1. 导航到交通管理>负载平衡/内容切换>虚拟服务器,选择虚拟服务器,单击政策
  2. 如果您正在配置此银行中的现有条目,请跳过此步骤。如果您正在为此策略银行添加新策略,或者您要使用“虚拟”nopolicy条目,请单击添加然后做以下其中一件:
    • 要配置新策略,单击“缓存”并配置新策略,请参见在集成缓存中配置策略
    • 若要调用策略银行而不处理策略规则,请选择NOPOLICY-CACHE选择。

注意:

要调用外部策略银行,请单击“调用类型”列中的“字段”,然后在“策略库”中选择要调用的策略库类型。这可以是全局标签或虚拟服务器库。在“调用名称”字段中,输入标签或虚拟服务器名称。

在集成缓存中配置策略标签

除了在策略库中为内置绑定点或虚拟服务器配置策略外,您还可以创建缓存策略标签并为这些新标签配置策略库。

可以仅从策略管理器中查看的绑定点之一来调用集成缓存的策略标签集成缓存详细信息窗格(请求覆盖、请求默认、响应覆盖或响应默认)或内置策略标签\ _reqBuiltinDefaults\ _resBuiltinDefaults. 与只能调用一次的策略不同,您可以多次调用策略标签。

Citrix ADC GUI提供了重命名策略标签的选项。重命名策略标签不会影响与该标签绑定的策略的评估过程。

请注意

你可以使用NOPOLICY“虚拟”政策可以从另一个策略银行援引任何策略标签。这NOPOLICYEntry是不处理规则的占位符。

使用命令行接口配置缓存策略标签

在命令提示符处,输入以下命令来创建一个策略标签并验证配置:

  • add cache policylabel - evalues(REQ|RES)
  • show cache policylabel

从策略银行调用此策略标签。

使用GUI配置缓存策略标签:

导航到优化>集成缓存>政策标签,添加策略标签,并绑定缓存的策略。

注意:为确保Citrix ADC在正确的时间处理策略标签,请在与内置绑定点关联的其中一个策略库中配置对此标签的调用。

要使用GUI重命名策略标签,请执行以下操作:

导航到优化>集成缓存>政策标签选择策略标签,并重命名。

取消绑定并删除集成的缓存策略和策略标签

您可以从策略库中取消策略策略,您可以删除它。要删除策略,您必须首先取消绑定它。您还可以删除策略标签调用并删除策略标签。要删除策略标签,必须先删除为标签配置的任何调用。

您不能解除或删除内置绑定点(请求默认、请求覆盖、响应默认和响应覆盖)的标签。

使用命令行接口解除绑定全局缓存策略

在命令提示符处,输入:

解除缓存全局策略>的绑定

使用命令行接口解除绑定特定于虚拟服务器的缓存策略

在命令提示符处,输入:

(unbind lb vserver|unbind cs vserver) -policyName -type(REQUEST|RESPONSE)

使用命令行接口删除缓存策略

在命令提示符处,输入:

RM Cache策略

使用GUI解除缓存策略绑定:

导航到优化>集成缓存, 点击缓存策略经理,并通过指定相关绑定点和连接类型(请求/响应)来解除绑定策略。

使用GUI删除策略标签调用:

  1. 导航到优化>集成缓存, 点击缓存策略经理,并指定相关的绑定点(负载平衡虚拟服务器或内容切换虚拟服务器)和连接类型,以查看绑定到此虚拟​​服务器的缓存策略列表。
  2. 在“策略调用”列中,清除条目。