刷新和预热资源

更新时间:
复制 MD 格式

刷新功能用于使CDN节点上的旧缓存失效,适用于源站资源更新、违规资源清理等场景;预热功能用于在业务高峰前将热点资源提前缓存到CDN节点,降低首次访问时的源站压力。

功能介绍

资源刷新

URL刷新会删除指定文件的节点缓存;目录刷新和正则刷新默认将匹配的缓存标记为过期。当用户再次请求已失效的资源时,CDN节点会回源获取资源,并在响应用户的同时重新缓存。

控制台默认刷新方式说明:在CDN控制台执行目录刷新或正则刷新时,默认采用标记刷新方式。标记刷新仅标记缓存过期,当CDN节点回源时,会携带If-Modified-Since或If-None-Match请求头。若源站返回304 Not Modified,节点会继续使用原缓存副本。若需无条件清除目录、正则或忽略参数匹配的缓存,可调用刷新缓存,并将Force设置为true。URL刷新直接删除指定文件的缓存,不使用Force参数。

适用场景

  • 资源更新和发布:源站的旧资源更新或升级后,为避免用户仍访问到旧的缓存资源,可提交对应资源的URL或目录进行刷新,确保用户访问到最新的资源并缓存至边缘节点。

  • 违规资源清理:源站存在不合规内容时,删除源站资源后,由于边缘节点仍可能存在缓存,资源仍可能被访问到。此时可通过URL刷新功能更新缓存资源,确保违规内容及时清除。

资源预热

预热操作由CDN节点根据提交的URL列表主动回源拉取资源,而非由源站推送。预热可降低热点资源首次访问时的回源压力。

预热机制说明:默认预热会将资源缓存到CDN的回源层节点,不会立即覆盖所有L1边缘节点。用户首次访问某个L1节点时,该节点仍可能需要从回源层节点或源站拉取资源。因此,预热的主要作用是降低源站压力,不保证所有L1节点立即命中缓存。

适用场景

  • 首次接入CDN:首次接入CDN后,可预热预计会被集中访问的热点静态资源,降低上线初期的源站压力。

  • 运营活动:大型活动开始前,可预热活动页中的关键静态资源。预热完成后,资源已进入CDN回源层缓存,但各L1节点是否命中仍取决于用户访问分布。

  • 安装包或其他大文件发布:新版本安装包或升级包发布前,可预热预计会被集中下载的文件,降低正式上线时的源站压力。

效果与成本边界

预热是否值得执行取决于文件大小、热点程度、加速区域和回源架构。小文件或非热点文件通常可由首次访问自然填充缓存,无需批量预热。

前提条件

  • 权限要求:使用 RAM 用户调用刷新预热 API(如 cdn:RefreshObjectCaches、cdn:PushObjectCache)或操作控制台时,须授予 cdn:RefreshObjectCaches(刷新)和 cdn:PushObjectCache(预热)权限。建议遵循最小权限原则,仅授予业务所需的操作权限。详情请参见CDN自定义权限策略参考。

  • URL 格式:提交的 URL 中若包含非 ASCII 字符(如中文、空格等),必须先进行 UTF-8 百分号编码(Percent-encoding),否则刷新或预热任务可能无法生效。

    示例:如 https://<加速域名>/文档/说明.pdf,须编码为 https://<加速域名>/%E6%96%87%E6%A1%A3/%E8%AF%B4%E6%98%8E.pdf。

刷新与预热注意事项

  • 操作时机:缓存刷新和预热任务都会产生回源流量,建议在业务流量低峰期执行大批量的缓存刷新和缓存预热任务。

  • 配置共享缓存:

    • 使用主域名或任意关联域名提交刷新任务,均可使所有关联域名的缓存失效。

    • 使用主域名提交预热任务,只会预热主域名的回源节点组。需要同时预热关联域名的回源节点组时,需要提交工单确认主域名和关联域名的回源节点组是否一致,若一致,预热主域名即可覆盖。

  • 重写访问URL:如果域名配置了重写访问URL,节点将使用重写后的 URL 来生成缓存键,因此需要提交重写后的 URL 进行刷新预热操作。

  • 刷新与缓存规则的关系:URL 刷新仅使 CDN 边缘节点上的具体资源缓存失效,不会删除或修改您在控制台中配置的目录类型缓存规则。

  • 源站无关性:刷新操作针对 CDN 边缘节点缓存执行,不支持指定只刷新某个源站的缓存。CDN 屏蔽了多源站的差异,刷新会统一作用于所有节点上的匹配资源。

  • 忽略参数场景的刷新:若域名配置了忽略参数缓存规则,URL 刷新时应确保提交的刷新 URL 与实际缓存键匹配,或使用目录刷新。灰度发布期间新旧版本共存时,可通过刷新带版本参数的 URL 获取最新内容。

  • URL 鉴权场景的刷新和预热:

    • 提交的刷新 URL 或预热 URL 应与实际缓存键一致。对于已配置 URL 鉴权的域名,应提交不含鉴权参数的原始 URL(加速域名 + 文件路径)。

    • 若业务查询参数(query string)中包含/ ,提交前需将其编码为 %2F。

    控制台在提交刷新或预热请求前,仅对 URL 进行格式校验,并按用户输入提交,不会自动删除鉴权参数、重新编码业务查询参数或规范化 URL。不要直接提交包含鉴权参数的客户访问 URL,否则可能因与实际缓存键不一致,导致无法命中目标缓存。

    以下示例以配置了 F 方式 URL 鉴权的域名为例。示例中的 k 和 t 分别表示该域名配置的签名参数和时间戳参数名称。

    1. 客户访问 URL:

      https://image.example.com/cat.jpg?x-oss-process=image/resize,m_fill,w_390,h_520,limit_1/auto-orient,1/sharpen,100/quality,q_80&k=123456789abcdefg&t=123abc
    2. 去除鉴权参数后的 URL:删除 k 和 t,保留业务查询参数。

      https://image.example.com/cat.jpg?x-oss-process=image/resize,m_fill,w_390,h_520,limit_1/auto-orient,1/sharpen,100/quality,q_80
    3. 最终刷新/预热 URL:将业务查询参数 x-oss-process 值中的 / 编码为 %2F;路径 /cat.jpg 中的路径分隔符保持不变。

      https://image.example.com/cat.jpg?x-oss-process=image%2Fresize,m_fill,w_390,h_520,limit_1%2Fauto-orient,1%2Fsharpen,100%2Fquality,q_80

费用说明

刷新和预热功能本身不收取任何操作费用。

URL刷新会立即删除指定缓存;目录或正则刷新会使匹配缓存失效,后续用户请求可能触发回源。预热任务则会主动回源拉取资源。由此产生的回源流量和回源请求次数可能按源站产品的计费规则收费:

大规模刷新或预热操作(尤其短时间内集中执行)可能导致回源成本增加。

操作步骤

刷新资源

  1. 登录CDN控制台。

  2. 在左侧导航栏,单击刷新预热。

  3. 在刷新缓存/预热缓存页签,选择操作类型为刷新。

  4. 根据需求选择操作方式并提交任务。

操作方式

操作说明

URL刷新

目的:精确失效一个或多个具体文件的缓存。

操作:在 URL 输入框中输入完整的 URL(包含http://或https://),每行一个。一个账号每日最多可提交10,000条URL刷新。例如:https://<加速域名>/static/image.jpg。

目录刷新

目的:失效指定 URL 目录下所有文件和子目录的缓存。

操作:输入完整的目录 URL,须以/结尾。例如:https://<加速域名>/static/。

说明:此方式为标记刷新。若需强制刷新整个目录,请使用刷新缓存 API 并设置Force=true。每次最多可提交100条目录刷新,单个域名每分钟最多可提交100条目录刷新。

正则刷新

目的:按正则表达式匹配 URL 路径,批量失效符合规则的资源缓存。适用于精确到路径的刷新场景,例如按版本号、文件类型或路径段批量刷新资源。

操作:输入带有正则表达式的 URL。例如:https://<加速域名>/static/[0-9][a-z].*.jpg。目前仅支持以下四种正则模式:[0-9]:匹配任意单个数字(0~9)。示例:img[0-9].jpg匹配img0.jpg~img9.jpg。[a-z]:匹配任意单个小写字母(a~z)。示例:file[a-z].txt匹配filea.txt~filez.txt。[^/]*:匹配单个路径段(不包含/的任意字符序列)。示例:cdn.aliyun.com/[^/]*.js匹配根目录下所有 JS 文件。.*:匹配任意路径段(包含/的任意字符序列)。示例:cdn.aliyun.com/.*匹配该域名下所有资源。

说明:此方式为标记刷新。若需强制刷新整个目录,请使用刷新缓存 API 并设置Force=true。建议尽量使用更精确的匹配规则,避免非预期的大范围缓存失效。一个账号每日最多可提交20条包含正则表达式的URL。

如何实现全站刷新(全局/根目录刷新)

CDN 不支持一键全站刷新,但您可以通过以下方式实现全站刷新:

  1. 目录刷新:在操作方式中选择目录,输入域名根目录 URL(如 https://<加速域名>/)。URL 必须以 / 结尾。

  2. 强制刷新(API):若目录刷新后部分节点仍返回旧缓存,建议调用刷新缓存 API(RefreshObjectCaches),将 Force 参数设置为 true 进行强制刷新。强制刷新将无条件删除节点上的缓存资源,确保下次访问回源获取最新内容。

    说明

    控制台的刷新表单不支持设置 Force 参数,如需使用强制刷新,请通过 API 或 SDK 调用。

  3. 单击提交,系统开始执行刷新任务。

    • 刷新任务一旦提交成功,无法中止。

    • 刷新任务通常需要 5~6 分钟在全网生效。如果缓存过期时间小于此值,则无需手动刷新。

    • 如果在OSS控制台开启了CDN缓存自动刷新,则无法通过CDN控制台查看OSS自动提交的缓存刷新任务。

预热资源

  1. 登录CDN控制台。

  2. 在左侧导航栏,单击刷新预热。

  3. 在刷新缓存/预热缓存页签,选择操作类型为预热。

  4. 在 URL 输入框中输入需要预热的完整文件 URL,每行一个。不支持预热目录。例如:https://<加速域名>/install/package.zip。

  5. 单击提交,系统开始执行预热任务。

    • 预热任务一旦提交成功,无法中止。

    • 预热任务的完成时间取决于文件大小、数量和源站性能,通常需要 5~30 分钟。

预热 OSS 文件注意事项

当源站为 OSS 时,预热 URL 须注意以下规范:

  • URL 格式:必须填写 CDN 加速域名的完整 URL(如 https://cdn.example.com/path/file.zip),不能填写源站 OSS 的内网或外网地址(如 https://<源站域名>/...)。

  • 签名参数:预热 URL 中不得包含 OSS 的临时签名参数(如 Expires、OSSAccessKeyId、Signature 等)。这些是临时授权参数,会导致预热失败。请使用不含签名的永久可访问 URL。

  • 源站响应状态码:预热要求源站返回 200 状态码。若源站返回 308 重定向或其他非 200 状态码,预热任务将失败。例如,URL 末尾缺少斜杠导致 OSS 返回重定向时,应补全斜杠后重新提交。

参数

说明

预热类型

仅支持URL预热,不支持目录预热。

URL

输入的URL须带有http://或https://,预热URL须为精确的资源文件路径,不支持输入以/结尾的目录。预热多个URL时,请按一行一个URL输入。

URL预热配额(每日):默认情况下,一个账号每日最多可提交1000条URL预热任务,如账号日带宽峰值大于200Mbps,可申请提升每日配额,阿里云将根据实际业务需求进行评估和配置。每次最多可提交100条URL预热任务。

预热队列规则:每个账号的预热队列最大为100,000条URL,按URL提交先后顺序进行预热;当预热队列中待预热的URL达到100,000条时,将拒绝接收新的预热任务。

预热速度:预热任务的执行速度与需要预热资源的文件平均大小有关,文件平均大小越小,预热速度越快。

自动化刷新或预热

存在以下情况时,建议使用自动化脚本刷新和预热:

  • 无开发人员,需手动提交刷新预热任务,运维成本高。

  • 刷新或预热URL过多,分批提交导致效率低。

  • 需要人工或程序判断刷新预热任务是否正常进行。

验证结果

手动查询

操作记录页签可查看资源刷新或预热的详细记录和进度。进度为100%表示任务执行完成。刷新或预热的数量过多会影响任务的完成进度,请耐心等待。

接口查询

调用查询刷新预热任务-按ID接口,查询刷新或预热任务是否完成。

命令行验证

执行命令curl -I <资源链接>,系统显示结果如下:

~ % curl -I http://oss.xxx.cn/1.png
HTTP/1.1 200 OK
Server: Tengine
Content-Type: image/png
Content-Length: 1605553
Connection: keep-alive
Date: Sun, 23 Feb 2025 15:33:38 GMT
x-oss-request-id: 67BB3Fxxx32B63123
x-oss-cdn-auth: success
Accept-Ranges: bytes
ETag: "469118F2ACF477CACAF4C9xxx"
Last-Modified: Wed, 12 Feb 2025 03:29:36 GMT
x-oss-object-type: Normal
x-oss-hash-crc64ecma: xxx005350070
x-oss-storage-class: Standard
Content-MD5: RpEY8qz0d8rxxx
x-oss-server-time: 103
Via: cache6.12cn2655[196,195,200-0,M], cache15.12cn2655[197,0], kunlun3.cn192[0,0,200-0,H], kunlun7.cn192[3,0]
Age: 69
Ali-Swift-Global-Savetime: 1740324818
X-Cache: HIT TCP_MEM_HIT dirn:-2:-2
X-Swift-SaveTime: Sun, 23 Feb 2025 15:33:38 GMT
X-Swift-CacheTime: 3600
Timing-Allow-Origin: *
EagleId: 3adad01b1740324887846539le

响应头中的X-Cache反映当前请求是否命中缓存:

  • X-Cache为HIT,表示当前请求命中了缓存,但不能单独证明该缓存由本次预热任务生成。还需在控制台核对对应预热任务的状态和URL。

  • X-Cache为MISS,表示当前请求未命中缓存。首次访问的L1节点尚未缓存、缓存已过期或缓存键不一致均可能导致MISS,不能据此直接判定预热失败。

如果响应中不存在X-Cache:

先通过DNS解析结果、响应链路和CDN控制台配置确认请求是否经过阿里云CDN。部分响应不包含该字段,不能仅凭字段缺失判定资源未接入CDN。域名尚未接入时,请参见快速接入阿里云CDN完成接入后再预热。

使用限制

刷新和预热功能存在配额限制,超出限制后任务将被拒绝。如需提升配额,可前往配额管理申请:

操作类型

方式

配额限制

管理额度

刷新

URL刷新

每个账号每日最多10000条

配额提升申请或特殊场景审批,审批通常需要 1 个工作日:配额管理

目录刷新

每次最多提交100条;每个域名每分钟最多100条

正则刷新

每个账号每日最多20条

预热

URL预热

每次最多提交100条;每个账号每日最多1000条

大量文件预热的使用限制

  • 不支持目录预热:预热仅支持提交具体文件的URL,不支持输入以/结尾的目录路径。

  • 优先选择热点资源:仅预热预计会被集中访问且可能给源站造成压力的资源。小文件或非热点文件通常可在首次访问时自然填充缓存。

  • 配额与队列:每个账号每日默认1000条URL预热配额,预热队列最大容量为100,000条URL。

  • 回源流量:预热会触发CDN回源层节点拉取资源,实际回源量受节点分布、文件大小、任务范围和源站类型影响。建议分批提交并观察源站负载;视频类业务可配合Range回源,避免一次性拉取完整大文件。

参考:CDN的缓存刷新机制

URL刷新直接删除指定文件的缓存。目录刷新和正则刷新默认采用标记刷新,也可通过API使用强制刷新;忽略参数刷新同样支持Force参数。

标记刷新(CDN默认策略)

  • 适用场景:常规目录或正则刷新,且允许源站通过条件请求确认资源是否变化。

  • 机制:这是目录刷新和正则刷新在控制台上的默认行为。CDN节点回源时会携带If-Modified-Since或If-None-Match请求头,由源站判断资源是否已更新。

  • 效果:如果源站返回304 Not Modified,CDN节点会继续使用原缓存副本。若需要无条件清除目录、正则或忽略参数匹配的缓存,请使用强制刷新。

强制刷新

  • 适用场景:需要无条件清除目录、正则或忽略参数匹配的缓存,例如紧急清理违规内容或源站文件同名更新。

  • 机制:通过刷新缓存提交目录、正则或忽略参数刷新任务时,将Force设置为true。CDN节点会直接清除匹配的缓存,不进行304校验。

  • 效果:下次访问时,CDN节点会回源获取资源。单个文件应使用URL刷新直接删除缓存,无需设置Force。

强制刷新的典型应用场景

以下场景可通过刷新缓存API设置Force=true:

  • 违规内容或木马清理:清理单个文件时提交URL刷新;清理整个目录或一组匹配资源时使用强制刷新,避免条件回源返回304后继续保留旧缓存。

  • 同名文件更新:若源站替换了同名文件,但条件回源仍返回304 Not Modified,可对目录或匹配范围执行强制刷新。

  • 批量资源内容异常:若同一目录或规则范围内的多个资源仍返回旧内容,可在确认源站内容已更新后执行强制刷新。

API强制刷新参数示例:

{
  "ObjectType": "Directory",
  "ObjectPath": "https://<加速域名>/static/",
  "Force": true
}

关键参数说明:

  • ObjectType:强制刷新支持Directory、Regex和IgnoreParams。File刷新直接删除指定文件缓存,不使用Force。

  • ObjectPath:按ObjectType填写完整目录URL、正则URL或忽略参数刷新URL。

  • Force:设置为true后,CDN直接清除匹配缓存,不使用If-Modified-Since/If-None-Match进行条件回源校验。

常见问题

刷新和预热相关常见问题