配置资源在CDN节点的缓存规则
您可以配置CDN节点中某个或某些缓存资源的缓存过期时间规则。当CDN节点缓存的资源达到设置的缓存过期时间后,用户再次请求该资源时,CDN将直接回源站请求对应的最新资源返回给用户,并缓存到CDN节点。支持按照“首页”、“所有文件”、“目录路径”、“文件名后缀”及“全路径”方式指定资源范围,同时支持针对不同的缓存规则配置“URL参数”,从而提高缓存命中率,提升分发效率。
背景信息
CDN节点的缓存策略遵循HTTP标准协议,通过HTTP响应头中的Cache-control: max-age的字段来设置CDN节点上数据的缓存时间。添加缓存规则让CDN用户可以对指定的业务做定制化的数据缓存时间管理。合理的配置缓存时间,能够有效提升命中率,降低回源率,节省用户的带宽。
当用户向CDN节点请求数据时,CDN节点会判断缓存数据是否过期。如果缓存数据未过期,则直接将缓存数据返回给用户,提升获取速度;否则,CDN节点就会向源站发出回源请求,从源站请求最新数据,更新本地缓存,并将最新数据返回给用户。
注意事项
- 每个域名最多可添加60条缓存规则。
- CDN缓存过期时间会对“回源率”产生直接的影响。如果CDN缓存过期时间过短,CDN节点上的数据会经常失效,导致频繁回源,增加了源站的负载,同时也增大了访问延时;如果CDN缓存过期时间过长,会带来数据更新时间慢的问题。
- 缓存过期时间设置为0时,该文件的所有请求都将回源,可能存在加速业务中断的风险。
- 节点缓存的资源,可能会由于热度较低而被提前从CDN节点删除。
- 如果您修改了缓存规则,请注意:
- 新的规则仅对后面缓存的资源生效,已经缓存的资源需要等缓存过期后,再次缓存才会遵循新的缓存规则。
- 如果您想要新的规则对所有资源(包括节点已缓存资源)立即生效,请在修改缓存规则后执行缓存刷新操作。
操作步骤
- 登录CDN控制台。
- 在左侧菜单栏中,选择。
- 在域名列表中,单击需要修改的域名或域名所在行的“设置”,进入域名配置页面。
- 选择“缓存配置”页签。
- 在缓存规则模块单击“编辑”,可在“操作”列“编辑”单条规则。
- 单击缓存规则列表下方“添加规则”按钮,进入添加规则界面。根据业务需求配置缓存策略,具体配置参数说明如表1所示,您还可以单击“查看缓存配置策略”查看推荐的配置。
单击“高级配置”左侧
按钮,可展开高级配置项,请根据业务需求调整配置项。图1 配置缓存策略
表1 缓存策略配置参数 参数
说明
配置规则
所有文件
设置CDN节点所有缓存资源的过期时间。
对于新添加的加速域名,CDN默认添加一条“所有文件”缓存过期时间为30天的规则(全站加速默认缓存时间为0),此默认规则允许修改,不允许删除。
文件名后缀
设置指定文件类型的缓存资源的缓存规则。
对于新添加的业务类型为网站加速、文件下载加速和点播加速,且源站为“源站IP”或“源站域名”的加速域名,CDN默认添加一条常规动态文件(如.php .jsp .asp .aspx)缓存过期时间为0的规则,对此类动态文件请求会直接回源。此默认规则允许修改和删除。
- 支持所有格式的文件类型。
- 输入首字符为“.”,以“;”进行分隔。
- 输入的文件后缀名总数不能超过100个。
- 字符总数不能超过1000。
- 文件名后缀英文字符支持大写和小写。
示例:.JPG;.zip;.exe。
说明:如果您的域名在后台有特殊配置,支持的文件后缀总数不能超过20,总字符数不能超过255。
目录路径
设置某一指定路径下的缓存资源的缓存规则。
前缀匹配,输入要求以“/”作为首字符,以“;”进行分隔,输入的目录路径总数不能超过20个,且字符总数不能超过255。示例:/test/folder01;/test/folder02。
- 支持通配符匹配,使用通配符时要注意以下规则:
- 使用通配符匹配时每条规则最多可配5个“*”,“*”不可连续出现,且只能输入一个目录路径如:/test/*。
- 前缀匹配,如果配置路径为/test/*,则/test/abc、/test/abc/001都会遵循该条缓存规则。
- 后台有特殊配置的域名,不支持配置通配符*。
- 通配符*可以匹配换行符\n之外的任何字符,如/test/*/abc可以匹配到 /test/folder01/folder02/abc。
- 通配符只能匹配0个或多个字符,例:/test*可以匹配到/test。 说明:
华为云CDN于2026年4月调整了通配符“*”的匹配逻辑,详情如下:
- 从未配置过通配符“*”的账号,通配符“*”可以匹配0到多个字符。
- 已配置过通配符“*”的账号,通配符“*”可以匹配1到多个字符,如果需要调整为可以匹配0到多个字符,请提交工单申请。
- 支持配置连续多个“/”,且默认为不同路径,即:“/test”与“//test”代表不同路径。
全路径
设置完整路径下某一文件的缓存规则。
输入要求以“/”作为首字符,最多可配置5个“*”,且“*”不可连续出现。支持匹配指定目录下的具体文件或者带通配符"*"的文件。单条全路径缓存规则里仅支持配置一个全路径。示例:如/test/index.html或/test/*.jpg。
说明:华为云CDN于2026年4月调整了通配符“*”的匹配逻辑,详情如下:
- 从未配置过通配符“*”的账号,通配符“*”可以匹配0到多个字符。
- 已配置过通配符“*”的账号,通配符“*”可以匹配1到多个字符,如果需要调整为可以匹配0到多个字符,请提交工单申请。
- 支持配置连续多个“/”,且默认为不同路径,即:“/test”与“//test”代表不同路径。
首页
设置根目录缓存规则
网站的根目录就是网站的顶层文件目录,目录下放着网站所有的子文件夹。
- 只能配置一条“类型”为“首页”的缓存规则。
优先级
缓存规则的优先级。
优先级设置具有唯一性,不支持多条缓存规则设置同一优先级,且优先级不能输入为空。多条缓存规则下,不同缓存规则中的相同资源内容,CDN按照优先级高的缓存规则执行缓存内容过期。
取值为1~1000之间的整数,数值越大优先级越高。
缓存过期时间
达到设置的缓存过期时间后,当用户向CDN节点请求资源时,CDN会直接回源站请求对应的最新资源返回给用户,并缓存到CDN节点中。
时间设置不能超过365天,建议参考如下规则进行配置:
- 对于不经常更新的静态文件(如.jpg、.zip等),建议将缓存过期时间设置成1个月以上。
- 对于频繁更新的静态文件(如js、css等),请根据实际业务情况设定。
- 对于动态文件(如php、jsp、asp、动态接口等),建议设置成0秒,回源获取。
URL参数
目前大多数的网页请求都携带URL参数信息,参数以“?”开始,如果参数没有包含重要信息(如版本信息等),可以设置忽略部分参数,从而提高缓存命中率,提升分发效率。
配置原则:
- URL参数变化,资源不变,可以配置忽略参数。
- URL参数变化,资源变化,不可配置忽略参数。
- 如果您开通了“视频拖拽”功能,请将您视频资源对应的“URL参数”设置为“忽略参数”。
- 不忽略参数:不忽略“?”之后的参数。
- 忽略参数:忽略所有URL参数,CDN缓存时忽略请求URL中“?”之后的参数,提高缓存命中率。
- 忽略指定参数:CDN缓存时将忽略您在控制台配置的参数,保留其它参数。
- 保留指定参数:CDN缓存时将保留您在控制台配置的参数,忽略其它参数。
URL参数值
需要忽略或保留的指定参数值,当“URL参数”选择“不忽略参数”或“忽略参数”时不填。
- 最多可填写30个参数名,多个参数之间用“;”分隔。
- 支持数字0-9、字符a-z、A-Z,及特殊符"."、"_"、"~"。
缓存过期时间来源,即原缓存遵循源站配置。
如果源站配置了缓存过期时间,即源配置了Cache-Control:max-age或Expires,您希望CDN的缓存过期时间与源站配置一致,或者取缓存规则配置的过期时间与源站的最小值,可以通过配置缓存过期时间来源实现。默认缓存过期时间来源为CDN,支持配置的取值如下:
- 源站:CDN节点的缓存过期时间遵循源站的设置。
- CDN:CDN节点的缓存过期时间遵循“缓存规则”中的“缓存过期时间”。
- 源站和CDN的最小值:CDN节点的缓存过期时间取缓存规则和源站二者的最小值。
说明:- 如果源站同时配置了Cache-Control和Expires,优先遵从Cache-Control配置的过期时间。
- 如果“缓存过期时间来源”为“源站”,但是源站没有配置Cache-Control和Expires,此时节点缓存遵循CDN配置的缓存规则。
缓存过期时间来源默认为CDN。
强制缓存
强制缓存决定CDN节点缓存过期时间是否忽略源站响应头Cache-Control中的no-cache、private、no-store字段,开启代表忽略,关闭代表不忽略。强制缓存与缓存过期时间来源功能配合使用,配合使用结果详见表2。
默认开启强制缓存功能。
SWR开关
如果您的源站的Cache-Control头部设置了stale-while-revalidate=***(***为时间),可以在CDN侧开启SWR开关,当CDN节点缓存的资源过期后,如果客户端请求该资源时过期时间没有超过stale-while-revalidate设置的时间,浏览器仍然返回已缓存的资源,同时cdn节点会回源请求最新的资源并缓存,用户再次请求时就会得到最新的资源。
-
- (可选)通过单击缓存规则所在行的“删除”,删除不需要的缓存规则。
- 单击“确定”,完成缓存规则配置。
强制缓存与缓存过期时间来源配合使用的不同结果说明
强制缓存功能决定CDN节点缓存过期时间是否忽略源站响应头Cache-Control中的no-cache、private、no-store字段,开启代表忽略,关闭代表不忽略。强制缓存与缓存过期时间来源功能配合使用,配合使用规则详见表2。
| 缓存过期时间来源 | 强制缓存 | 配置结果 |
|---|---|---|
| 源站 | 关闭 |
|
| 源站 | 开启 | 此时忽略源站的不缓存设置,即源站响应头Cache-Control设置了no-cache、private、no-store时依然会缓存资源,缓存逻辑如下:
|
| CDN | 关闭 |
|
| CDN | 开启 | 此时忽略源站响应头,执行CDN控制台配置的缓存过期时间。 |
| 源站和CDN的最小值 | 关闭 |
|
| 源站和CDN的最小值 | 开启 |
|
配置示例
配置场景1:某客户的域名“www.example.com”配置了CDN加速,缓存规则配置见下图。

配置结果:网站首页不缓存,所有页面均不会忽略URL参数。
配置场景2:设置某个类型的文件不缓存
- 某客户的域名“www.example.com”配置了CDN加速,由于业务需求,需要对“.do”格式的文件不缓存,同时所有文件都忽略URL参数。
需要在CDN控制台增加一条文件名后缀为“.do”的缓存规则,缓存过期时间设置为“0”。

新规则仅对后续资源缓存生效,新规则配置完成后,建议您刷新“.do”文件所在的URL或者目录,新规则才可以对所有“.do”文件生效。
- 某客户配置了CDN加速,发现登录界面无限循环,无法登录,停用CDN加速后,可以正常登录。
这是因为CDN节点缓存了登录界面导致的,需要在控制台增加一条针对登录界面的缓存规则,缓存过期时间设置为“0”。以华为云控制台登录界面为例,华为云控制台的登录页面为“https://auth.huaweicloud.com/authui/login.html#/login”,在控制台增加一条全路径:/authui/login.html#/login,缓存过期时间为“0”的缓存规则。

配置场景3:某客户加速域名www.example.com设置了如下图的缓存规则,不知道哪一个规则生效。

用户访问www.example.com/test/cdn.jpg,虽然所有文件、文件名后缀、全路径三条规则都匹配到了,但是由于全路径的优先级为8,在三条规则里优先级最高,所以系统最终匹配全路径/test/*.jpg这条规则。
相关文档
- 如果您需要了解URL参数、SWR等相关概念,请参见基本概念。
- CDN节点的缓存多久会更新,会自动更新吗?
- 如何判断CDN是否缓存命中?
- 缓存配置为什么没有生效?
- 如何保证CDN的内容和源站同步?
- 调用接口配置缓存规则请参考:修改域名全量配置接口 - UpdateDomainFullConfig。