刷新和预热相关常见问题

本文为您介绍CDN刷新和预热相关的常见问题。

刷新和预热有什么区别?

  • 刷新:把CDN所有节点上对应的缓存资源标记为失效,当用户再次请求时,CDN会直接回源站获取对应的资源并返回给用户,同时将资源重新缓存到CDN节点。刷新功能会降低缓存命中率。

  • 预热:源站主动将对应的资源缓存到CDN节点,当您首次请求资源时,即可直接从CDN节点获取到最新的资源,无需再回源站获取。预热功能会提高缓存命中率。

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

刷新和预热通常是两种不同的操作,并不一定有严格的先后顺序。但在实际应用中,根据场景可能会有一个自然的逻辑顺序。当您的源站资源更新,需要更新CDN节点缓存时:

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

  2. 后预热:待刷新任务生效后再进行预热操作,将最新的内容缓存到CDN节点,保证用户第一时间获取到速度最快的服务。

  3. 如果您首次接入CDN,节点无缓存,可以直接执行预热操作,将资源缓存到CDN节点。

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

刷新预热是对加速域名对应的URL内容进行操作,所以,您需要输入的是基于加速域名下的URL,而不是源站的原始URL。这样做的原因是CDN系统通过加速域名来识别和管理缓存资源,对加速域名下指定路径的请求进行刷新或预热,可以确保CDN节点上的缓存内容得到及时更新或提前加载。

如何刷新泛域名的缓存?

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

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

  • 刷新任务从提交到生效,大约需要5~6分钟,如果文件或者目录配置的缓存过期时间少于5分钟,您无需执行刷新操作,等待文件或者目录缓存超时更新即可。

  • 预热任务从提交到预热完成,实际执行时间视预热文件大小而定,大约需要5~30分钟,文件平均大小越小,预热速度越快。

预热时能携带自定义请求头预热吗?

预热请求默认携带的header是Accept-Encoding:gzip,如果您需要预热请求携带其他header,或者实现多副本预热,那么可以使用OpenAPI接口PushObjectCache-预热URL,并通过设定请求参数WithHeader来实现自定义预热header。

如何提高刷新和预热的每日配额上限?

  • URL刷新和目录刷新

    默认情况下,一个账号每日最多可以提交10,000条URL刷新和100条目录刷新,目录刷新包含子目录。如果您的阿里云账号的日带宽峰值大于200Mbps,您可以通过配额管理申请提升每日配额,阿里云将根据您业务的实际需求进行评估和配置。

  • 正则刷新

    默认情况下,一个账号每日最多可以提交20条正则刷新,如果您的阿里云账号的日带宽峰值大于10Gbps,您可以通过填写信息来申请提升每日配额。

  • 预热

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

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

是否支持自动化刷新或预热?

如果您需要自动化刷新或预热,请参见使用自动化脚本刷新和预热

如何查看CDN的预热任务是否执行完成?

  1. 登录CDN控制台

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

  3. 操作类型选择预热,在URL框内输入URL地址,单击提交。提交预热任务后,您可以在操作记录页签中查看资源预热的详细记录和进度。预热进度为100%,表示预热任务执行完成。预热数量多会影响预热进度,请您耐心等待。

    说明

    预热任务的状态为成功,表示预热任务提交成功,并不代表文件已经预热结束。

  4. 执行如下命令,查看预热任务的执行状态。

    curl -I 'http://example.aliyundoc.com/test.json'

    系统显示类似如下。 TB1oFf2JFXXXXa9XXXXXXXXXXXX.png

    说明
    • Via的前半部分代表L2节点状态,其中的“H”表示命中,说明文件已经预热到L2节点,不需要再回源站。

    • Via的后半部分代表L1节点的状态,“M”表示L1节点上没有缓存,需要向L2节点回源。

相关文档

调用DescribeRefreshTaskById,查询刷新状态和预热状态是否在全网生效,详情请参见DescribeRefreshTaskById - 查询刷新预热任务-按ID

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

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

  • 建议您源站的内容不使用同名更新,而是采用版本号的方式同步。

    为了能准确找到更新前和更新后的源站内容,建议您源站的内容以版本号的方式同步,即更新源站内容时采用不同的名称。例如,采用img-v1.0.jpgimg-v2.1.jpg的方式命名。

  • 对于必须进行同名更新的文件,可以从控制台或是OpenAPI提交刷新请求。控制台操作请参见刷新和预热资源,OpenAPI操作请参见刷新预热。使用CDN刷新预热功能后,访问的资源如没有更新,请参见为什么使用CDN刷新预热功能后访问的资源没有更新?

预热失败了怎么办?

预热失败的可能原因是:

  1. 确认URL正确性:验证预热的URL是否正确,包括是否有拼写错误、路径错误或者文件实际不存在等问题,确认URL是否可以直接在浏览器中访问。

  2. 检查源站状态:确认源站服务器是否正常工作,没有出现过载或宕机情况,如不能正常访问也将造成预热失败。

  3. 控制预热任务的数量:如果同时提交了大量的预热任务,可能会因为系统繁忙导致一部分任务失败。预热时请尽量分批次执行,避免对源站带宽造成过大压力。

  4. 检查资源可缓存性

    • 确认预热的资源是否允许被缓存。如果资源设置了Cache-Control头部为no-cacheno-storeprivate,并且CDN配置遵循源站头信息,则会导致资源无法被缓存。

    • 检查资源对应的缓存过期时间(如Expiresmax-age),确保其不是0,非零值表示资源可以被缓存。

    CDN缓存规则请参见阿里云CDN默认缓存规则及优先级

  5. 目前不支持预热目录。

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

问题原因

导致资源没有更新的常见原因有以下3种:

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

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

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

解决方案

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

  • 尝试清理浏览器缓存,然后刷新页面,查看资源是否更新。

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

  • 登录CDN控制台,检查刷新预热任务是否执行完毕,如果没有执行完毕,建议重新执行任务,如何执行请参见刷新和预热资源

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

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

是否支持预热M3U8文件?

M3U8文件是一种基于HTTP Live Streaming (HLS) 的视频流媒体播放列表格式,它由苹果公司开发。M3U8是M3U播放列表文件的扩展,其中“8”代表文件使用UTF-8字符编码。该文件格式通常用于在线流媒体服务,以提供连续播放的多媒体内容。M3U8文件是一个纯文本文件,包含了分段(通常是TS或MP4文件)视频文件的路径信息,这些分段视频文件被称为“切片”。

预热只作用于M3U8文件本身,不会自动预热列表中引用的各个TS切片文件。您可以使用脚本来预热M3U8文件,详情请参见CDN和视频点播中使用脚本刷新预热M3U8资源

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

CDN预热是多个节点同时进行下载,开始某个节点的下载速度较快,随着更多节点的加入,下载速度受到源站服务器带宽的影响,呈现先快后慢的情况。对于带宽较小的源站服务器所需预热时间会长一点,因此,可以通过升级带宽来解决或者使用OSS来存储大文件。使用CDN对OSS资源进行加速,以获得更好的加速效果。