刷新和预热相关常见问题

更新时间:
复制 MD 格式

本文汇总 CDN 缓存刷新与预热操作中的常见问题,涵盖刷新与预热的区别、执行顺序、配额上限、失败排查、浏览器缓存干扰、同名更新、M3U8 预热等场景。

刷新和预热有什么区别?

刷新和预热是两种不同的操作:

  • 刷新:向 CDN 节点下发缓存失效指令,标记已缓存的资源为过期。用户再次请求时,CDN 节点回源获取最新资源并返回给用户,同时重新缓存。刷新会降低缓存命中率。

  • 预热:CDN 节点主动从源站拉取资源并缓存到节点上。用户首次请求时可以直接从 CDN 节点获取资源,无需回源。预热会提高缓存命中率。

刷新和预热有先后顺序吗?

刷新和预热通常是两种独立的操作,没有严格的先后顺序。实际应用中,根据场景会有自然的逻辑顺序。当源站资源更新,需要更新 CDN 节点缓存时:

  • 先刷新:删除 CDN 缓存中的旧文件,让后续访问获取到源站上的最新内容。

  • 后预热:刷新任务生效后进行预热操作,将最新内容缓存到 CDN 节点,保证用户在最短时间内获取到最新内容。

  • 首次接入 CDN:若节点无缓存,可直接执行预热操作,将资源缓存到 CDN 节点。

刷新预热时,输入源站 URL 还是加速域名 URL?

刷新预热操作针对加速域名下的 URL,需输入加速域名下的 URL,而非源站原始 URL。CDN 系统通过加速域名识别和管理缓存资源,对加速域名下指定路径的刷新或预热可以确保 CDN 节点上的缓存内容得到及时更新或提前加载。

如何刷新泛域名的缓存?

阿里云 CDN 不支持直接刷新整个泛域名下的所有缓存内容,需要对具体子域名的目录或特定 URL 路径分别提交刷新请求,不能直接输入 https://*.example.com/file01.htmlhttps://*.example.com/file02/。刷新多个 URL 时,请按一行一个 URL 输入。

刷新和预热任务需要多久生效?

  • 刷新任务:提交后大约 5~6 分钟在全网生效。如果资源的缓存过期时间小于此值,则无需手动刷新。

  • 预热任务:取决于文件大小和数量,通常需要 5~30 分钟。

CDN配置修改后如何快速生效?

修改CDN配置(如回源Host、缓存规则、响应头等)通常对新请求生效。但如果边缘节点已缓存了旧响应头或内容,新配置不会立即覆盖已有缓存。要使配置变更快速生效,需手动刷新对应的URL或目录缓存,强制边缘节点回源获取最新配置下的资源。

例如,修改响应头或缓存时间后,可登录CDN控制台的刷新缓存页面,输入需要刷新的URL或目录路径并提交刷新请求。若涉及配置变更导致的内容类型(Content-Type)不一致,需先在源站修正元数据后,再对相应URL执行刷新操作。

预热请求是否支持携带自定义请求头?

预热请求默认携带的 Header 是 Accept-Encoding: gzip。如需在预热请求中携带其他 Header 或实现多副本预热,可使用 OpenAPI 接口查询刷新预热任务-按ID

配置 CDN 后如何对文件进行同名更新?

使用 CDN 加速资源时,请参见以下方法进行文件更新:

  • 对于一般文件更新,推荐在上传时为资源 URL 添加版本号(如 ?v=1.0),避免同名更新带来的缓存问题。

  • 对于必须进行同名更新的文件,可从控制台或 OpenAPI 提交刷新请求。控制台操作请参见刷新和预热资源,OpenAPI 操作请参见刷新预热

为什么JS/CSS文件名更新后,仅刷新首页无效?

浏览器和CDN都会缓存具体的JS/CSS文件URL。若文件名未变但内容更新,或文件名已变但HTML中引用未更新,仅刷新首页可能导致子资源仍命中旧缓存。

建议

  • 直接刷新具体的JS/CSS文件URL,而非仅刷新首页。

  • 为资源URL添加版本号参数(如?v=1.0),避免同名更新导致的缓存问题。

  • 若源站发生同名更新,请通过CDN控制台手动刷新对应URL的缓存,刷新后稍等几分钟再使用无痕模式重新访问测试。

为什么使用 CDN 刷新预热功能后访问的资源没有更新?

问题原因:资源未更新的常见原因有以下几种:

  • 使用 CDN 刷新预热虽然清除了 CDN 缓存,但受到浏览器缓存的影响,导致访问到旧的资源。

  • 源站的资源没有更新,本身就是旧的资源。

  • 刷新预热任务没有执行完毕。

  • 使用目录刷新时,CDN 默认采用标记过期机制(标记刷新),回源验证时携带 If-Modified-Since 或 If-None-Match 请求头。如果源站同名文件的 Last-Modified 或 ETag 未变更,源站返回 304 Not Modified,CDN 继续使用旧缓存。

解决方案:根据问题原因选择对应的解决方法:

  • 清理浏览器缓存后刷新页面,查看资源是否更新,或使用无痕模式/更换浏览器访问测试。

  • 将站点域名直接绑定源站(通过修改本地 host 的方式),直接访问源站检查资源是否更新。如果资源没有更新,请先更新源站资源,再使用 CDN 加速。

  • 登录刷新和预热资源

  • 改用 URL 精确刷新(File 类型)直接删除具体文件的缓存,或调用 RefreshObjectCaches API 并将 Force 参数设置为 true,强制删除 CDN 节点缓存而非标记过期。

已经进行了缓存预热,为什么下载速度先快后慢?

CDN 预热是多个节点同时进行下载,开始某个节点的下载速度较快,随着更多节点的加入,下载速度受到源站服务器带宽的影响,呈现先快后慢的情况。对于带宽较小的源站服务器所需预热时间会更长。建议评估源站带宽,必要时提升带宽或分批次预热。

源站返回 30X 重定向状态码,会对资源预热有什么影响?

预热时,如果源站返回 307 等重定向相关的状态码,预热任务不会跟随重定向地址继续完成预热,最终会导致预热失败。如果源站返回的是 301 或者 302 状态码,并且 CDN 上已经开启了回源 301/302 跟随,这种情况下正常预热不受影响。

源站文件删除或内容更新后,CDN仍返回旧内容或404如何处理?

CDN节点存在历史缓存,即使源站文件已删除或更新,缓存仍可能被访问到。处理方法:

  1. CDN控制台或通过API对具体URL执行刷新操作。

  2. 若为目录级缓存策略影响,建议对整个目录进行刷新。如需彻底清除,调用RefreshObjectCaches API并将Force参数设置为true进行强制刷新。

  3. 确认源站文件已确实更新或删除。

如何排查CDN预热失败的原因?

预热失败请按以下步骤逐一排查:

  1. 检查URL是否可正常访问:确认预热的URL浏览器可直接访问并返回200状态码。若返回308等重定向状态码,请预热带有斜杠结尾的正确URL地址。

  2. 确认未预热目录:预热仅支持具体文件URL,不支持以/结尾的目录路径。

  3. 检查OSS动态加速影响:若源站为OSS且开启了动态加速,可能导致静态文件不走缓存路径,建议关闭动态加速或指定静态文件类型。

  4. 检查URL格式:URL须包含完整协议头(http://https://),无非法字符(全角字符、多余空格等)。多个URL之间用换行分隔,不能用逗号。

  5. 检查资源可缓存性:确认预热资源未被设置Cache-Control: no-cache/no-store/private等不可缓存头。

是否需要分别对HTTPHTTPS刷新和预热?

不需要,只需要刷新或预热HTTPHTTPS其中一种即可。例如您需要预热aaa.mp4文件,您只需预热https://example.com/aaa.mp4即可,不必再预热http://example.com/aaa.mp4