规则相关的功能在以下三个特性上存在差异。本文将对这三个特性的概念进行详细说明,并明确每个规则相关功能的特性差异。
规则配置和全局配置的生效优先级
规则配置优先级高于全局配置:针对同一个功能,规则中配置的生效优先级更高。因此您可以在基础的通用功能配置上,通过规则来对特定的请求生效特定的功能配置。
以边缘节点缓存过期时间为例,若您在全局配置-边缘缓存过期时间中配置了边缘过期时间为12小时,并且在规则-配置边缘缓存过期时间中配置了
/content下的资源在边缘节点上的过期时间为30天。那么当请求的资源路径在/content路径下时,边缘节点将把该资源的缓存过期时间调整为30天。对于请求的资源不在/content路径下,则在边缘节点中会统一调整缓存过期时间为12小时。规则列表中顺序越靠前的优先级越高:针对同一个规则功能,规则执行的顺序是从上到下,依次执行。因此在实际业务使用中,当请求同时符合多个规则的触发条件时,您可以将您期望优先执行的动作通过拖拽
按钮调整至更靠上的位置。说明不同套餐支持的功能和规则条数不相同,各类型套餐的规则条数配额可参考:规则与套餐的配额说明。
以缓存规则为例,如果您同时存在以下2条规则:
规则1:
/content路径下的资源过期时间为30天。规则2:后缀为
.jpg的文件缓存时间为60天。若配置了规则1的顺序在上,规则2的顺序在下。对于不同的资源的在边缘节点上的缓存时间为:
URL示例
在
/content路径下.jpg后缀缓存过期时间
https://example.com/content/static/pic.jpg30天
https://example.com/content/static/book.txt30天
https://example.com/static/pic.jpg60天
https://example.com/static/res/book.text不缓存
若配置了规则2的顺序在上,规则1的顺序在下。对于不同的资源的在边缘节点上的缓存时间为:
URI示例
在
/content路径下.jpg后缀缓存过期时间
https://example.com/content/static/pic.jpg60天
https://example.com/content/static/book.txt30天
https://example.com/static/pic.jpg60天
https://example.com/static/res/book.text不缓存
规则功能的可重入性
功能模块的可重入性指的是某个指令是否可以安全地在多个阶段、多次调用,并且每次调用的行为是独立的、叠加的、互不影响的。
可重入的功能
在一个请求的处理过程中,可重入的功能可以被多次调用,并且每次调用的行为是独立的、叠加的、互不影响的,例如:修改出站请求头功能是可重入功能,同一个客户端请求如果匹配上多个规则条件,则对应的每个规则配置都会执行。
示例1:修改出站请求头
假如一个用户请求同时匹配条件B和条件C,那么配置2和配置3都会执行,全局配置也会执行,但是因为全局配置没有设置执行动作,因此没有影响,最终执行结果是用户请求将会被加上以下2个请求头:
animal: cat
fruit: apple
序号 | 规则配置 | 规则条件 | 功能配置 | 是否执行 |
1 | 规则配置1 | 条件A(不匹配) | 新增一个请求头,请求头名称为food,请求头值为rice。 | 否 |
2 | 规则配置2 | 条件B | 新增一个请求头,请求头名称为animal,请求头值为cat。 | 是 |
3 | 规则配置3 | 条件C | 新增一个请求头,请求头名称为fruit,请求头值为apple。 | 是 |
全局配置 | 无 | 无 | 是 | |
不可重入的功能
在一个请求的处理过程中,不可重入的功能只能被调用一次,调用结束以后就跳出对应的功能模块。同一个客户端请求如果匹配上多个规则条件,则只有第一个匹配上的规则配置会执行。
示例2:重写URL
假如一个用户请求同时符合条件B和条件C,那么仅配置2会执行,由于规则配置2序号靠前,先匹配上了条件B,执行结果是用户请求URL的路径被改写为/animal:
原始请求:http://example.com/test
重写后的请求:http://example.com/animal
序号 | 规则配置 | 规则条件 | 功能配置 | 是否执行 |
1 | 规则配置1 | 条件A(不匹配) | 将用户请求URL的路径被改写为/food。 | 否 |
2 | 规则配置2 | 条件B | 将用户请求URL的路径被改写为/animal。 | 是 |
3 | 规则配置3 | 条件C | 将用户请求URL的路径被改写为/fruit。 | 否 |
全局配置 | 无 | 无 | 否 | |
规则配置的生效颗粒度
规则配置的生效颗粒度包含功能维度和子功能维度。
功能维度
规则作用于整个功能模块,配置按整个功能模块生效。
用户请求匹配上某个规则条件时,如果某个子功能模块的配置为空,则该子功能模块将按照未添加配置来执行。
示例1:SSL/TLS规则(不可重入功能,并且规则配置按功能维度生效)
假设用户请求同时符合条件 B 和条件 C,由于规则配置2序号靠前,先匹配上了条件B,则仅执行配置 2,其中 TLS 加密套件为空的部分按默认设置生效。
序号 | 规则配置 | 规则条件 | SSL/TLS加密 | TLS加密套件与协议版本配置 | OCSP Stapling | HTTP/2 | HTTP/3(QUIC) | 是否执行 |
1 | 规则配置1 | 条件A(不匹配) | 开启 | - | 关闭 | 关闭 | 关闭 | 否 |
2 | 规则配置2 | 条件B | 开启 | - | 关闭 | 关闭 | 关闭 | 是 |
3 | 规则配置3 | 条件C | 开启 | - | 开启 | 开启 | 开启 | 否 |
全局配置 | 无 | 关闭 | - | 关闭 | 开启 | 开启 | 否 | |
子功能维度
规则作用于子功能模块,配置按子功能模块生效。
用户请求匹配上某个规则条件时,如果某个子功能模块的配置为空,则该子功能模块将继续往下匹配规则条件,直到命中规则条件的同时,子功能模块的配置不为空。
示例2:缓存规则(不可重入功能,并且规则配置按子功能维度生效)
以下为缓存规则配置示例。假设用户请求同时符合条件 B、C 和 D,按照序号从小到大匹配则各子功能,未配置项按全局默认设置执行。
序号 | 配置 | 规则条件 | 缓存资格 | 浏览器缓存过期时间 | 边缘缓存过期时间 | 自定义CacheKey | 端口缓存 | 响应过期缓存 | 缓存保持 |
1 | 规则配置1 | 条件A(不匹配) | 符合缓存条件 | - | 优先遵循源站缓存策略(如果存在),否则不缓存 | - | - | 关闭 | - |
2 | 规则配置2 | 条件B | 符合缓存条件 | - | 优先遵循源站缓存策略(如果存在),否则不缓存 | - | - | 关闭 | - |
3 | 规则配置3 | 条件C | 绕过缓存 | 不缓存 | - | - | - | - | - |
4 | 规则配置4 | 条件D | 符合缓存条件 | - | 忽略源站缓存策略,使用自定义缓存TTL=1小时 | 忽略查询字符串 | - | 关闭 | - |
5 | 规则配置5 | 条件E | 符合缓存条件 | - | - | - | - | 关闭 | - |
全局配置 | 无 | - | - | - | - | 默认关闭 | - | 默认关闭 | |
最终生效配置 | 符合缓存条件 | 不缓存 | 优先遵循源站缓存策略(如果存在),否则不缓存 | 忽略查询字符串 | 关闭 | 关闭 | 关闭 | ||
不同功能特性差异表
功能分类 | 规则功能名称 | 规则功能的可重入性 | 规则配置的生效颗粒度 | 规则配置的生效优先级 |
SSL/TLS | 不可重入 | 功能 | 按照规则列表的序号,序号越小,优先级越高。 | |
不可重入 | 子功能 | 按照规则列表的序号,序号越小,优先级越高。 | ||
转换规则 | 不可重入 | 功能 | 按照规则列表的序号,序号越小,优先级越高。 | |
可重入 | 子功能 | 按照规则列表的序号,序号越小,优先级越高。 | ||
可重入 | 子功能 | 按照规则列表的序号,序号越小,优先级越高。 | ||
重定向 | 不可重入 | 功能 | 按照规则列表的序号,序号越小,优先级越高。 | |
缓存 | 不可重入 | 子功能 | 按照规则列表的序号,序号越小,优先级越高。 | |
内容优化 | 不可重入 | 子功能 | 按照规则列表的序号,序号越小,优先级越高。 | |
不可重入 | 子功能 | 按照规则列表的序号,序号越小,优先级越高。 | ||
不可重入 | 子功能 | 按照规则列表的序号,序号越小,优先级越高。 | ||
网络优化 | 不可重入 | 子功能 | 按照规则列表的序号,序号越小,优先级越高。 | |
回源 | 不可重入 | 子功能 | 按照规则列表的序号,序号越小,优先级越高。 | |
配置管理 | 不可重入 | 功能 | 按照规则列表的序号,序号越小,优先级越高。 | |
流量 | 不可重入 | 功能 | 按照规则列表的序号,序号越小,优先级越高。 | |
不可重入 | 功能 | 按照规则列表的序号,序号越小,优先级越高。 需要注意是否设置了结束动作:
| ||
安全防护 | 不可重入 | 功能 | 按照规则列表的序号,序号越小,优先级越高。 | |
不可重入 | 功能 | 按照规则列表的序号,序号越小,优先级越高。 | ||
不可重入 | 功能 | 按照规则列表的序号,序号越小,优先级越高。 | ||
不可重入 | 功能 | 按照规则列表的序号,序号越小,优先级越高。 | ||
不可重入 | 功能 | 按照规则列表的序号,序号越小,优先级越高。 | ||
不可重入 | 功能 | 按照规则列表的序号,序号越小,优先级越高。 | ||
不可重入 | 功能 | 按照规则列表的序号,序号越小,优先级越高。 |