缓存刷新概述
在火山引擎内容分发网络(CDN)中,每个被缓存的文件都有一个缓存过期时间。如果一个文件在缓存中未过期,但是源站上对应的文件已被更新,CDN 依然会将缓存的文件提供给用户。此时,如果您需要用户能获取源站上更新后的文件,您可以使用 CDN 提供的"缓存刷新"功能。
工作原理
您可以使用"缓存刷新"功能为特定文件或者目录提交刷新任务。
- 文件刷新:CDN 会删除缓存中指定的文件。之后,当收到对这些文件的请求时,CDN 会向源站请求文件。
- 目录刷新:CDN 会将指定目录下所有已缓存的文件,包括子目录中的文件,标记为已过期。当收到这些文件的请求时,CDN 会向源站发送文件校验请求。关于文件校验的流程,参见 缓存规则。
适用场景
"缓存刷新"功能适用于以下场景:
- 站点上有关键文件被更新,您需要用户能获取最新的文件。如果您站点上文件的更新频率是可预知的,建议您为站点文件 配置缓存规则。
- 源站上的特定文件由于某些原因需要被删除。但是,这些文件可能已被 CDN 缓存。您不希望用户访问到这些已被删除的文件。
最佳实践
CDN 可以与火山引擎函数服务配合使用,以实现以下功能:
注意事项
- "缓存刷新"可以确保用户获取最新版本的文件。但是当您对一个文件提交刷新任务并且任务成功执行后,该文件的首次访问是无法获得加速效果。如果您需要该文件的首次访问能被加速,在刷新任务成功执行后,您可以使用 文件预热 功能。关于如何了解任务的执行状态,参见 操作记录。
- 在您提交刷新任务后,任务生效时间大约是 5 分钟。
- 在您对大量文件提交刷新任务后,这些文件的首次请求都会触发回源请求。因此您的源站可能会在短期内承受流量压力,特别是在文件体积较大时。
- 您不能直接对泛域名下的文件和目录执行刷新操作。具体操作方法,参见 如何对泛域名下的文件和目录执行刷新、预热、封禁和解封操作。
刷新配额
您账号每日刷新配额如下:
- 如果您刷新的是 URL,您每天最多可以刷新 10,000 个 URL。每个刷新任务中最多可以包含 100 个 URL。如果您需要调整这些额度,参见 配额管理。
- 如果您刷新的是目录,您每天最多可以刷新 50 个目录。
操作步骤
- 登录 火山引擎内容分发网络控制台。
- 在左侧导航栏,点击 刷新预热。
- 在 刷新预热 页面,点击 缓存刷新 标签页。
- 按照 配置说明 进行操作。
- 点击 提交。

配置说明
配置 | 说明 |
|---|
任务类型 | 表示刷新任务的类型。该配置有以下选项: - URL 刷新:表示刷新的对象是一个或者多个文件。
- 目录刷新:表示刷新的对象是一个或者多个目录。
您账号下每天可刷新的文件和目录的数量是有限额的。参见 刷新配额。 |
前缀刷新 | 表示是否开启前缀刷新。该配置仅当 任务类型 是 目录刷新 时才会出现,默认是关闭。 |
URL | 表示需要刷新的 URL。该配置有以下取值: - 手动输入:表示手动输入那些需要刷新的 URL。
- 上传文件:表示上传一个 .txt 文本文件,包含需要刷新的 URL。
URL 必须满足以下条件: - 如果 任务类型 是 URL 刷新,您可以指定最多 100 个文件的 URL。文件 URL 必须满足以下条件:
- 文件 URL 必须 以
https:// 或者 http:// 开头。 - 多个文件 URL 以换行分隔。
- 如果 任务类型 是 目录刷新 时,有以下说明:
- 如果 前缀刷新 未开启,您可以指定最多 100 个目录的 URL。目录 URL 必须满足以下条件:
- 目录 URL 必须 以
https:// 或者 http:// 开头,并且以 / 结尾。 - 多个目录 URL 以换行分隔。
- 如果 前缀刷新 已开启,您可以指定最多 100 个用于匹配目录 URL 的前缀。例如
http://example.com/im 可用于匹配 http://example.com/image/ 和 http://example.com/imece。
|
刷新 HTTP 请求头 | 对于待刷新文件的缓存键,该配置指定了缓存键中必须包含的请求头列表。 请求头有以下要求: - 您最多可以指定 10 个请求头。
- 请求头不能为 User-Agent ,也不能以
x-bdcdn- 或 Volc-Cdn 开头。 - 请求头和请求头的值均不能超过 1,024 个字符。
此配置的常见使用场景如下: - 您使用规则引擎配置了参与缓存键构造的请求头列表。在执行刷新操作时,您希望只刷新缓存键中包含指定请求头的文件。
|
共享缓存场景下目录刷新的注意事项
假设出现以下场景:
- 您对一个加速域名提交了目录刷新任务。为了后续描述方便,本文中我们称该域名为 "任务域名"。
- 该任务域名在一个 共享缓存 配置中。
在该场景中,CDN 有以下行为:
- 刷新该任务域名下的目标目录。之后,如果 CDN 收到该任务域名下目标目录中文件的请求,CDN 会向源站请求最新的文件来响应请求,并缓存最新的文件。
- 不刷新共享缓存配置中其他域名下的目标目录。对于这些域名下的目标目录,当 CDN 收到目录中某个文件的请求时,会出现以下情况:
- 如果 CDN 已经收到过对任务域名下同一文件的请求,由于 CDN 已经缓存了来自源站的最新文件,此时会使用最新的文件响应请求。
- 否则,CDN 将使用缓存中已有的文件响应请求,而该文件不是最新的。
解决方法
对于共享缓存配置中的其他域名,您需要对每个域名下的目标目录都提交目录刷新任务。
白名单功能
您需要 提交工单 启用以下功能:
强制删除
当 任务类型 是 目录刷新 时,该配置会出现,用以指定是否删除已缓存的文件。
- 默认情况下,当您提交目录刷新任务时,CDN 会将缓存中对应的文件标记为过期,而不是直接删除文件。当收到对这些文件的请求时,CDN 会向源站发送文件校验请求,而不是直接向源站请求文件。关于回源校验的更多信息,参见 缓存规则。
- 开启 强制删除 后,刷新任务会删除缓存中对应的文件。当收到对这些文件的请求时,CDN 会直接向源站请求文件。
正则刷新
在您指定文件 URL 时,您可以在 URL 中使用正则表达式来匹配需要刷新的文件。您可以输入一个或者多个 URL,多个 URL 使用换行分隔。每个 URL 不能超过 256 个字符。正则表达式在匹配时区分大小写。
您账号下每天可刷新 20 个包含正则表达式的 URL。您一次最多可以提交 10 个 URL。
在 URL 中,您可以指定的正则表达式有以下限制:
- 正则表达式匹配的是文件路径和查询字符串,但不包含路径开头的
/。URL 的格式必须是 http://host/regex 或者 https://host/regex。其中,host 表示加速域名,regex 表示正则表达式。 - 正则表达式中只能包含以下元字符:
- [0-9]
- [a-z]
- [A-Z]
- [a-zA-Z]
- [^/]*
- .*
- [,?]
- ?
注意事项
在您构建的包含正则表达式的文件 URL 中,除了路径开头的 /,整个路径都被认为是正则表达式。因此,只要正则表达式匹配了某个实际文件的 URL 中的部分路径,该文件就会被认为是匹配,从而被 CDN 刷新。
例如,https://www.example.com/dir2/.*\.js 可以匹配以下文件的 URL:
- http://www.example.com/dir2/img1.js
- http://www.example.com/dir2/img1.js?size=small
- http://www.example.com/dir1/dir2/img1.js
- http://www.example.com/dir1/dir2/img1.jsp
