跳转到内容
搜索文档

可用设置

最后更新 查看 MarkdownAgent 设置

这些是创建缓存规则(Cache Rule)时可以配置的设置。

字段

Expression Builder(表达式构建器) 中 Cache Rule 匹配表达式可用的字段有:

  • URI Full - http.request.full_uri
  • URI - http.request.uri
  • URI Path - http.request.uri.path
  • URI Query String - http.request.uri.query
  • Cookie - http.cookie
  • Hostname - http.host
  • Referer - http.referer
  • SSL/HTTPS - ssl
  • User Agent - http.user_agent
  • X-Forwarded-For - http.x_forwarded_for
  • Request Headers - http.request.headers
  • Cookie value of - http.request.cookies
  • File extension - http.request.uri.path.extension

如果您选择 Edit expression 选项,可以输入任何可用字段

运算符

Cache Rule 表达式可用的运算符有:

  • wildcard(通配符匹配)
  • strict wildcard(严格通配符匹配)
  • equals(等于)
  • does not equal(不等于)
  • contains(包含)
  • does not contain(不包含)
  • matches regex(匹配正则)
  • does not match regex(不匹配正则)
  • starts with(以...开头)
  • ends with(以...结尾)
  • does not start with(不以...开头)
  • does not end with(不以...结尾)
  • is in(在列表中)
  • is not in(不在列表中)
  • is in list(在名单中)
  • is not in list(不在名单中)

缓存资格

Cache eligibility(缓存资格) 中,如果希望匹配的请求不被缓存,可以选择 Bypass cache(绕过缓存);如果希望 Cloudflare 尝试缓存它们,可以选择 Eligible for cache(符合缓存条件)

绕过缓存(Bypass cache)

创建缓存规则时,如果希望匹配的传入请求不被缓存,可以选择 Bypass cache(绕过缓存)。或者,如果希望在较短时间内绕过缓存,可以使用开发模式

符合缓存条件的设置(Eligible for cache settings)

当您选择 Eligible for cache(符合缓存条件) 时,可以更改以下描述的配置设置。

Edge TTL

Edge Cache TTL(边缘缓存 TTL)是指资产被视为新鲜或可从 Cloudflare 缓存中提供的最长缓存生存时间。此设置有三个主要选项:

  • Use cache control-header if present, bypass cache if not(如存在则使用 cache-control 标头,否则绕过缓存):如果响应中存在 cache-control 标头,则遵循其指令;否则,完全跳过缓存。
  • Use cache-control header if present, use default Cloudflare caching behavior if not(如存在则使用 cache-control 标头,否则使用默认 Cloudflare 缓存行为):如果响应中存在 cache-control 标头,则遵循其指令;否则,按照我们的默认边缘 TTL 设置进行缓存。
  • Ignore cache-control header and use this TTL(忽略 cache-control 标头并使用此 TTL):完全忽略响应上的任何 cache-control 标头,并将响应缓存为时间下拉菜单中指定的时长。

此外,您可以选择特定匹配状态码的内容在 Cloudflare 全球网络中缓存的时长。在 Status Code TTL(状态码 TTL) 部分,您可以为来自源站服务器的一个或多个响应状态码定义 TTL 时长。此设置可应用于单个状态码、大于等于或小于等于某个状态码,或状态码范围。状态码 TTL 类似于 Ignore cache-control header and use this TTL(忽略 cache-control 标头并使用此 TTL),响应上的 cache-control 标头将被忽略,改为使用缓存规则指定的 TTL。有关更多信息,请参阅状态码 TTL

API 信息

API 配置对象名称:"edge_ttl"

API 值 配置
respect_origin 如果存在 cache-control 标头则使用,否则使用默认 Cloudflare 缓存行为
override_origin 忽略 cache-control 标头并使用此 TTL。
bypass_by_default 如果存在 cache-control 标头则使用,否则绕过缓存。
API configuration examplejson
"action_parameters": {
    "cache": true,
    "edge_ttl": {
        "status_code_ttl": [
            {
                "status_code_range": {
                    "to": 299
                },
                "value": 86400
            },
            {
                "status_code_range": {
                    "from": 300,
                    "to": 499
                },
                "value": 0  // no-cache
            },
            {
                "status_code_range": {
                    "from": 500
                },
                "value": -1  // no-store
            }
        ],
        "mode": "respect_origin"
    }
}

完整 API 示例请参阅通过 API 创建缓存规则

Browser TTL

Browser TTL(浏览器 TTL)是指资产被视为可从浏览器缓存中提供的最长缓存生存时间。

选择是否要 Bypass cache(绕过缓存)、**Respect origin(遵循源站)**或 Override origin(覆盖源站)。如果希望覆盖浏览器 TTL 值,可从下拉菜单中定义客户端浏览器缓存资源的有效时长。有关更多信息,请参阅浏览器缓存 TTL

API 信息

API 配置对象名称:"browser_ttl"

"mode" 属性的 API 值:"respect_origin""override_origin""bypass_by_default"

"default" 属性的 API 值(整数):可用值取决于您的方案。请参阅浏览器缓存 TTL

API configuration examplejson
"action_parameters": {
  "cache": true,
  "browser_ttl" : {
    "mode": "override_origin",
    "default": 1000
  }
}

完整 API 示例请参阅通过 API 创建缓存规则

缓存键(Cache Key)

缓存键是指 Cloudflare 用于确定如何在缓存中存储资源的标准。自定义缓存键可以让您决定 Cloudflare 如何在请求之间重用特定缓存条目,或为终端用户共享缓存条目以提高粒度。

缓存键没有明确的长度限制。但是,请求的总大小(包括缓存键中使用的标头)不得超过 Cloudflare 的请求限制。在缓存键中包含较大的值(如 Cookie)可能会增加每个请求的延迟。自定义缓存键配置中查询字符串参数的最大数量为 100。

定义用于定义自定义缓存键的请求组件,并自定义以下选项:

Enterprise 客户还有以下自定义缓存键的附加选项:

  • Query string(查询字符串) 部分,您可以选择 All query string parameters(所有查询字符串参数)、**All query string parameters except(除...外的所有参数)**并输入例外、**No query parameters except(除...外无查询参数)**并输入参数,或 Ignore query string(忽略查询字符串,按量计费客户也可用)

  • Headers(标头) 部分,您可以指定标头名称及其值。对于自定义标头,值是可选的;但对于以下受限标头,您必须包含一到三个特定值:

    • accept
    • accept-charset
    • accept-encoding
    • accept-datetime
    • accept-language
    • referer
    • user-agent

    要检查标头的存在而不包含其值,请使用 Check presence of(检查是否存在) 选项。您还可以选择是否 Include origin header(包含源站标头)

  • Cookie 部分,您可以包含 Cookie 名称及其值,并检查另一个 Cookie 的存在。

  • Host(主机) 部分,您可以选择 **Use original host(使用原始主机)**和 Resolved host(解析主机)。在 User(用户) 部分,您可以选择 Device type(设备类型)、**Country(国家/地区)**和 Language(语言)。使用 Resolved host(解析主机) 表示缓存键将包含用于解析源站 IP 的主机名,该主机名可能因解析覆盖功能的开启状态而有所不同。

API 信息

API 配置对象名称:"cache_key"

API 值:"ignore_query_strings_order""cache_deception_armor""cache_by_device_type""custom_key""header""cookie""host""query_string""user")。

API configuration examplejson
"action_parameters": {
  "cache": true,
  "cache_key": {
    "ignore_query_strings_order": true,
    "cache_deception_armor": true,
    "custom_key": {
      "query_string": {
        "include": [
          "*"
        ]
      },
      "header": {
        "include": [
          "header1"
        ],
        "check_presence": [
          "header_1"
        ],
        "contains": {
          "accept-encoding": ["br", "zstd"]
        }
      },
      "cookie": {
        "include": [
          "cookieName1"
        ],
        "check_presence": [
          "cookie_1"
        ]
      },
      "user": {
        "device_type": true,
        "geo": true,
        "lang": true
      },
      "host": {
        "resolved": false
      }
    }
  }
}

完整 API 示例请参阅通过 API 创建缓存规则

Cache Reserve 资格

Cache Reserve 资格允许您指定哪些网站资源应符合我们称为 Cache Reserve 的持久缓存的条件。如果请求匹配并且同时满足资格标准,Cloudflare 将把该资源写入 Cache Reserve。这需要额外的 Cache Reserve 方案附加项。

此规则还可用于根据资源大小指定网站资源的 Cache Reserve 资格。例如,通过指定所有符合条件的资产必须达到 100 MB 及以上,Cloudflare 将查找达到或超过 100 MB 的符合条件的资产,并仅将这些资产持久存储。

API 信息

API 配置对象名称:"cache_reserve"

启用 Cache Reserve 的 API 属性名称:"eligible"(布尔值)。

API configuration examplejson
"action_parameters": {
  "cache": true
  "cache_reserve": {
    "eligible": true,
    "minimum_file_size": 100000
  }
}

完整 API 示例请参阅通过 API 创建缓存规则

在端口上缓存(仅限 Enterprise)

Cloudflare 默认支持多个网络端口,如 80 或 443。某些端口(传统上为管理端口)受到支持,但由于用于管理不应被缓存的敏感信息,缓存已被禁用。希望在这些管理端口上启用缓存的 Enterprise 客户可以通过输入所需端口来在这些端口上启用缓存。

API 信息

API 配置属性名称:"additional_cacheable_ports"(整数值数组)。

API configuration examplejson
"action_parameters": {
    "cache": true
    "additional_cacheable_ports": [8443, 8080]
  }
}

完整 API 示例请参阅通过 API 创建缓存规则

代理读取超时(仅限 Enterprise)

定义源站服务器两次连续读取操作之间的超时值。默认值可在连接限制表中找到。如果您因源站服务器超时而尝试减少 HTTP 524 错误,请尝试使用以下 API 端点增加此超时值。

API 信息

API 配置属性名称:"read_timeout"(整数)。

API configuration examplejson
"action_parameters": {
  "cache": true,
  "read_timeout": 900
}

完整 API 示例请参阅通过 API 创建缓存规则

在重新验证时提供过期内容

定义 Cloudflare 是否在从源站服务器更新最新内容时提供过期内容。如果禁用提供过期内容,Cloudflare 在获取源站最新内容时不会提供过期内容。

API 信息

API 配置属性名称:"serve_stale" > "disable_stale_while_updating"(布尔值)。

API configuration examplejson
"action_parameters": {
  "cache": true,
  "serve_stale": {
    "disable_stale_while_updating": true
  }
}

完整 API 示例请参阅通过 API 创建缓存规则

遵循强 ETag(Respect Strong ETags)

开启或关闭 Cloudflare 缓存与源站服务器之间的逐字节等效性检查。启用后,Cloudflare 将使用强 ETag 标头验证来确保 Cloudflare 缓存中的资源与源站服务器上的资源在字节级别上完全相同。如果禁用,Cloudflare 会将 ETag 标头转换为弱 ETag 标头。

API 信息

API 配置属性名称:"respect_strong_etags"(布尔值)。

API configuration examplejson
"action_parameters": {
  "cache": true,
  "respect_strong_etags": true
}

完整 API 示例请参阅通过 API 创建缓存规则

源站错误页面直通(Origin error page pass-through)

开启或关闭由源站服务器发送的错误 HTTP 状态码生成的 Cloudflare 错误页面。如果启用,此设置允许使用源站发出的错误页面。

API 信息

API 配置属性名称:"origin_error_page_passthru"(布尔值)。

API configuration examplejson
"action_parameters": {
  "cache": true,
  "origin_error_page_passthru": true
}

完整 API 示例请参阅通过 API 创建缓存规则

源站缓存控制(Origin Cache Control,仅限 Enterprise)

启用此选项后,Cloudflare 将严格遵循 RFC 7234。Enterprise 客户可以选择 Cloudflare 是否遵循此行为。免费、Pro 和 Business 客户默认启用此选项,且无法禁用。

API 信息

API 配置属性名称:"origin_cache_control"(布尔值)。

API configuration examplejson
"action_parameters": {
  "cache": true
  "origin_cache_control": true
}

完整 API 示例请参阅通过 API 创建缓存规则

Vary

Vary 响应标头允许源站根据请求标头缓存同一 URL 的多个版本。使用 vary 对象可以配置 Cloudflare 如何处理源站在其 Vary 响应中列出的每个标头。有关 Vary 如何影响缓存键以及规范化如何工作的信息,请参阅 Vary

vary 对象支持以下键:

必填 说明
default 针对源站 Vary 响应中未包含在 headers 中的任何标头名称的配置。
headers 小写请求标头名称到配置对象的映射。

如果省略 vary 对象,此 Cache Rules Vary 设置将被关闭。其他 Vary 行为,如 Vary: *Vary for images 和压缩处理,不受影响。如果存在 vary 对象,则 default 是必填的。空的 vary 对象无效。

每个标头配置对象以及 default 对象必须包含一个 action 键,设置为 normalizepassthroughbypass 之一。有关何时使用每个选项的指导,请参阅操作

可以为某些标头名称指定附加参数:

标头 附加键 说明
accept media_types 规范化 Accept 标头时包含的 MIME 类型列表,最多 10 项。
accept-language languages 规范化 Accept-Language 标头时包含的语言列表,最多 20 项。

对于大多数部署,建议从限制性 default 和明确的每标头配置开始:

  • default 设置为 bypass,以避免为意外的源站 Vary 标头缓存变体。
  • 为您预期源站会变化的标头添加明确的 headers 条目。
  • acceptaccept-languageaccept-encoding 使用 normalize,除非源站需要原始标头值。
  • 当您知道源站可以提供的确切变体时,使用 media_typeslanguages 允许列表。
  • 仅在精确的原始标头值应选择不同的缓存版本时使用 passthrough
  • 对高基数标头(如 user-agent、Cookie 或具有每用户值的请求标头)使用 bypass

以下限制和验证规则适用:

  • headers 中的标头名称必须为小写。
  • 标头名称可以包含字母、数字、下划线和连字符。
  • 标头名称不得超过 128 个字符。
  • cf-cf_ 开头的标头名称不允许使用。
  • 某些逐跳或缓存控制标头(如 connectionhostcache-control)不允许使用。
  • headers 最多可包含 50 个条目。
  • accept.media_types 最多可包含 10 个条目。
  • accept-language.languages 最多可包含 20 个条目。
  • media_typeslanguages 中的值必须是非空的可打印 ASCII 字符。

API 信息

API 配置对象名称:"vary"

以下示例规范化 acceptaccept-language,并对源站 Vary 响应中的任何其他标头绕过缓存:

API configuration examplejson
"action_parameters": {
  "cache": true,
  "vary": {
    "default": {
      "action": "bypass"
    },
    "headers": {
      "accept": {
        "action": "normalize",
        "media_types": ["text/html", "application/json"]
      },
      "accept-language": {
        "action": "normalize",
        "languages": ["en", "fr", "de"]
      }
    }
  }
}

完整 API 示例请参阅通过 API 创建缓存规则Terraform 示例

这篇文档对您有帮助吗?