集成缓存的默认设置

Citrix ADC 集成缓存功能提供具有默认设置的内置策略以及默认内容组的初始设置。本节中的信息定义了内置策略和默认内容组的参数。

默认缓存策略

集成缓存具有内置策略。Citrix ADC 设备按特定顺序评估策略,如以下各节所述。

您可以使用绑定到请求时间覆盖或响应时间覆盖策略库的用户定义策略覆盖这些内置策略。

注意 如果您在版本 9.0 之前配置了策略,并在绑定策略时指定了 -precedeDefRules 参数,则在迁移过程中会自动将这些策略分配给超时绑定点。

查看默认策略

内置策略名称以下划线 (_) 开头。您可以使用显示缓存策略命令从命令行和管理控制台查看内置策略。

默认请求策略

您可以通过配置新策略并将其绑定到请求时间覆盖处理点来覆盖以下内置请求时间策略。在以下策略中,请注意 MAY_NOCACHE 操作规定只有在响应时有用户配置的或内置的 CACHE 指令时,才会缓存事务。

以下策略绑定到 _reqBuiltinDefaults 策略标签。它们按优先级顺序列出。

请勿缓存使用 GET 以外任何方法的请求的响应。

策略名称为 _nonGetReq。以下是策略规则:

!HTTP.REQ.METHOD.eq(GET)

为具有包含 If-Match 或 If-未修改-起始的标头值的请求设置 NOCACHE 操作。

策略名称是 _advancedConditionalReq。以下是策略规则:

HTTP.REQ.HEADER("If-Match").EXISTS || HTTP.REQ.HEADER("If-Unmodified-Since").EXISTS

为具有以下标头值的请求设置 MAY_NOCACHE 操作:Cookie、授权、代理授权或包含 NTLM 或协商标头的请求。

策略名称为 _personalizedReq。以下是策略规则:

HTTP.REQ.HEADER("Cookie").EXISTS || HTTP.REQ.HEADER("Authorization").EXISTS || HTTP.REQ.HEADER("Proxy-Authorization").EXISTS || HTTP.REQ.IS_NTLM_OR_NEGOTIATE

默认响应策略

您可以通过配置新策略并将其绑定到响应时间覆盖处理点来覆盖以下默认响应时间策略。

以下策略绑定到 _resBuiltinDefAULTS 策略标签,并按照它们列出的顺序进行评估:

  1. 除非 HTTP 响应类型为 200、304、307、203 或类型介于 400 和 499 之间或介于 300 和 302 之间,否则不要缓存 HTTP 响应。

    策略名称为 _uncacheableStatusRes。以下是策略规则:

    !((HTTP.RES.STATUS.EQ(200)) || (HTTP.RES.STATUS.EQ(304)) || (HTTP.RES.STATUS.BETWEEN(400,499)) || (HTTP.RES.STATUS.BETWEEN(300, 302)) || (HTTP.RES.STATUS.EQ(307))|| (HTTP.RES.STATUS.EQ(203)))

  2. 如果 HTTP 响应的值为“接受编码”以外的任何值,则不要缓存 HTTP 响应。

    压缩模块插入变化:接受编码标头。此表达式的名称是 _uncacheableVaryRes。以下是策略规则:

    ((HTTP.RES.HEADER("Vary").EXISTS) && ((HTTP.RES.HEADER("Vary").INSTANCE(1).LENGTH > 0) || (!HTTP.RES.HEADER("Vary").STRIP_END\_WS.SET_TEXT_MODE(IGNORECASE).eq("Accept-Encoding"))))

  3. 如果其 Cache-Control 标头值为 No-Cache、No-Store 或 Private,或 Cache-Control 标头无效,则不缓存响应。

    策略名称是 _uncacheableCacheControlRes。以下是策略规则:

    ((HTTP.RES.CACHE\_CONTROL.IS\_PRIVATE) || (HTTP.RES.CACHE\_CONTROL.IS\_NO\_CACHE) || (HTTP.RES.CACHE\_CONTROL.IS\_NO\_STORE) || (HTTP.RES.CACHE\_CONTROL.IS\_INVALID))

  4. Cache-Control 标头具有以下值之一的缓存响应:Public、Must-Revalidate、Proxy-Revalidate、Max-Age、S-Maxage。

    策略名称是 _cacheableCacheControlRes。以下是策略规则:

    ((HTTP.RES.CACHE_CONTROL.IS_PUBLIC) || (HTTP.RES.CACHE_CONTROL.IS_MAX_AGE) || (HTTP.RES.CACHE_CONTROL.IS_MUST_REVALIDATE) || (HTTP.RES.CACHE_CONTROL.IS_PROXY_REVALIDATE) || (HTTP.RES.CACHE_CONTROL.IS_S_MAXAGE))

  5. 不要缓存包含 Pragma 标头的响应。

    策略的名称为 _uncacheablePragmaRes。以下是策略规则:

    HTTP.RES.HEADER("Pragma").EXISTS

  6. 包含“过期”标头的缓存响应。

    策略的名称为 _cacheableExpiryRes。以下是策略规则:

    HTTP.RES.HEADER("Expires").EXISTS

  7. 如果响应包含具有图像值的内容类型标头,请删除标头中的任何 Cookie 并缓存它。

    策略的名称为 _imageRes。以下是策略规则:

    HTTP.RES.HEADER("Content-Type").SET_TEXT_MODE(IGNORECASE).STARTSWITH("image/")

    您可以配置以下内容组以使用此策略:

    add cache contentgroup nocookie -group -removeCookies YES

  8. 不缓存包含 Set-Cookie 标头的响应。

    策略的名称为 _ personalizedRes。以下是策略规则:

    HTTP.RES.HEADER(“Set-Cookie”).EXISTS   HTTP.RES.HEADER(“Set-Cookie2”).EXISTS

对默认策略的限制

您不能使用用户定义的策略覆盖以下内置请求时间策略。

这些策略按优先级顺序列出。

  1. 如果相应的 HTTP 请求缺少 GET 或 POST 方法,请勿缓存任何响应。
  2. 如果 HTTP 请求 URL 长度加上主机名超过 1744 byes,请勿缓存请求的任何响应。
  3. 不要缓存包含 If-Match 标头的请求的响应。
  4. 不要缓存包含 If-未修改-因为标头的请求。

注意 这与 If-修改-因为标题不同。

  1. 如果服务器未设置过期标头,则不缓存响应。

您不能覆盖以下内置响应时间策略。这些策略将按其列出的顺序进行评估:

  1. 请勿缓存 HTTP 响应状态代码为 201、202、204、205 或 206 的响应。
  2. 不要缓存具有 HTTP 响应状态代码为 4xx(状态代码 403、404 和 410 除外)的响应。
  3. 如果响应类型已终止 FIN,或响应不具有以下属性之一,请勿缓存响应:内容长度或传输编码:分块。
  4. 如果缓存模块无法解析其 Cache-Control 标头,请不要缓存响应。

默认内容组的初始设置

首次启用集成缓存时,Citrix ADC 设备会提供一个名为默认内容组的预定义内容组。有关详细信息,请参阅默认内容组设置表格。