You need to enable JavaScript to run this app.
内容分发网络

内容分发网络

复制全文
规则引擎
生效逻辑和优先级说明
复制全文
生效逻辑和优先级说明

在规则引擎中配置了多条规则或与基础配置产生交集时,理解其执行顺序和优先级至关重要。本文详细介绍了规则引擎的处理流程、动作执行的生命周期阶段,以及各种配置冲突时的优先级判定逻辑。

规则执行逻辑

CDN 按照规则列表的顺序,自上而下依次处理每条规则。具体的执行逻辑如下:

  • 单条子规则:遵循 IF...ELSE... 逻辑。如果请求满足 IF 条件,则 CDN 执行 IF 下的动作;否则,执行 ELSE 下的动作。
  • 单条规则
    • 规则下无子规则:直接遵循 IF...ELSE... 逻辑。
    • 规则下有子规则
      • 如果请求满足外层 IF 条件,CDN 会先执行外层 IF 下的动作,然后按顺序处理外层 IF 下的所有子规则。
      • 如果请求不满足外层 IF 条件,CDN 会先执行外层 ELSE 下的动作,然后按顺序处理外层 ELSE 下的所有子规则。
  • 多条规则:CDN 会按顺序逐一处理所有规则。

动作执行阶段

规则引擎的作用范围覆盖以下五个阶段(如下图所示),您在规则引擎中定义的各项行动,均会在这五个阶段中的一个阶段执行。
Image
规则引擎主要在以下两个阶段对请求进行匹配:

  • 收到用户请求
  • 收到源站响应

每个动作都有其执行阶段。下表总结了条件类型、动作和动作执行阶段的对应关系:

可指定的条件类型

可指定的动作

动作执行阶段

用户请求

  • 请求路径
  • URL(不含协议、host)
  • 完整 URL
  • 请求参数
  • Referer 请求头
  • 客户端 IP
  • Origin 请求头
  • UA 请求头
  • HTTP 请求头
  • 客户端区域
  • 请求方法
  • 请求时间
  • 请求协议
  • URL 重定向改写
  • 允许访问
  • 协议强制跳转
  • 下载限速
  • 客户端请求头设置
  • 拒绝访问
  • URL 鉴权

客户端请求

  • Range 回源
  • 回源重定向跟随
  • 回源 TCP 超时
  • 回源 HTTP 超时

回源请求

  • 缓存键值
  • 智能压缩
  • 视频拖拽
  • 节点缓存规则

CDN 缓存

  • HTTP 响应头设置
  • 浏览器缓存
  • HTTP 状态码改写
  • 自定义页面

客户端响应

源站响应

  • HTTP 响应头
  • HTTP 响应状态码
  • HTTP 响应头设置
  • 浏览器缓存
  • HTTP 状态码改写
  • 自定义页面

客户端响应

配置优先级

相同动作的优先级

CDN 按照“从上至下、从外向内”的顺序处理规则和子规则。当多个(子)规则中配置了相同的动作时,最后执行的动作配置最终生效(即位于底部或内层的配置会覆盖位于上方或外层的配置)。

示例
假设您的规则配置如下:

  • 主规则条件:请求路径 - 后缀匹配 - phpaspjsphtml(忽略大小写)
  • 主规则动作:HTTP 响应头设置 - 操作 删除 param_a,操作 设置 param_cvalue_1
  • 子规则条件:请求路径 - 等于 - /docs/(忽略大小写)
  • 子规则动作:HTTP 响应头设置 - 操作 删除 param_b,操作 设置 param_cvalue_2

当 CDN 收到对 /docs/3.php 的请求,且源站响应包含 param_aparam_bparam_c 三个响应头时,最终客户端收到的响应将不包含 param_aparam_b,但会包含 param_c,且 param_c 的值被设置为 value_2
Image

规则引擎与分阶段配置的优先级

如果您在规则引擎和“分阶段配置”中都设置了同一个 CDN 特性,规则引擎中的优先级更高。当两者发生冲突时,系统优先执行规则引擎中的动作设定。

示例
假设您希望对 .php 文件的回源请求设置 HTTP 超时为 10 秒,其他文件为 5 秒。您可以如下配置:

  • 规则引擎配置
    • 条件:请求路径 - 后缀匹配 - .php(忽略大小写)
    • 动作:回源 HTTP 超时 - 10 秒
  • 分阶段配置(回源配置)
    • HTTP 超时5 秒

Image

最近更新时间:2026.03.24 12:02:05
这个页面对您有帮助吗?
有用
有用
无用
无用