在上个章节中我们学习了CDN的缓存应当如何配置,并提及在文件变化但CDN缓存未过期时,可以通过CDN的刷新功能更新节点缓存,那么CDN刷新功能具体应当如何使用呢?
除了缓存内容的更新,CDN缓存是否可以在未触发访问时提前部署到节点来达到缩短请求中的回源耗时呢?
本章节中将为您介绍「CDN刷新/预热」功能如何理解及使用,功能的注意事项及使用限制,最终效果验证等内容。
准备工作
1.已经添加完成的CDN域名
2.阿里云CDN控制台。
本章节内容大纲
- 刷新功能的含义、使用、限制、注意事项,如何验证刷新成功。
- 预热功能的含义、使用、限制、注意事项,如何验证预热成功。
- CDN回源OSS时如何实现自动化刷新
- CDN回源其他源站时如何实现自动化刷新、预热逻辑
功能说明
>刷新:
- 作用:强制删除CDN所有节点上的缓存资源,用于更新CDN缓存内容。
- 效果:刷新缓存后,当您向CDN节点请求资源时,CDN会直接回源站获取对应的资源并返回给您,同时将资源重新缓存到CDN节点。
>预热:
- 作用:主动将源站对应的资源缓存到CDN节点上,用于减少回源时间消耗。
- 效果:预热缓存后,当您首次请求资源时, 即可直接从CDN节点获取到对应的资源内容,无需再回源站获取。
下表列出了刷新和预热功能常见的适用场景。
功能 | 适用场景 |
刷新 |
|
预热 |
|
刷新功能
上文我们提到,CDN刷新功能的作用是强制删除CDN所有节点上的缓存资源,用于更新CDN缓存内容。
当源站的相同文件名的内容更新后,如果CDN缓存的内容没有超出其缓存可用时间,CDN默认不会主动回源拉取的,需要主动通知CDN更新缓存才会触发回源拉取更新的动作。
刷新方式
登录CDN控制台后,在左侧导航栏单击刷新预热,在刷新缓存/预热缓存页签,提交刷新任务。
在刷新的操作方式中,主要有URL(常用)、目录(常用)、正则三种方式:
刷新方式 | 适合场景 | 说明 | 示例 |
URL |
刷新某个或某些具体URL对应的文件内容。 |
|
|
目录 | 刷新某个或某些路径下所有文件内容的缓存。 |
|
|
正则 | 提交含有正则表达式的URL,对符合该表达式的URL进行大批量刷新。 |
|
使用限制
默认情况下,CDN限制提交每日的刷新总量、单次提交刷新数量、每分钟提交数量。如果您账号的日带宽峰值超过调整阈值,可参考配额管理申请提升每日URL刷新/目录刷新配额,阿里云将根据您业务的实际需求进行评估和配置。
刷新方式 | 默认限制 | 调整阈值 | 申请入口 |
URL | 一个账号每日最多可以提交10000条URL刷新,每次最多可以提交1000条URL刷新,单个域名每分钟最多可以提交1000条URL刷新。 | 200 Mbps |
配额中心 |
目录 | 一个账号每日最多可以提交100个目录刷新,一次可全部提交,目录刷新包含子目录。如果您提升了每日配额,每次最多可以提交1000条目录刷新。 | 200 Mbps |
配额中心 |
正则 | 一个账号每日最多可以提交20个正则刷新(每次最多提交一个)。 | 10 Gbps |
工单 |
小提示:配额中心入口:控制台搜索产品「配额中心」,左侧导航栏选择产品列表 > 通用配额,产品类目下拉框里选择视频与CDN,单击CDN进入产品配额申请页面,您可以根据需要完成操作。
注意事项
- 如果您需要清空域名下所有缓存,提交根目录刷新即可,例如 http://www.example.com/ ,但需要注意目录刷新时,可能会导致CDN大量缓存失效,命中率下降,回源率升高,如果实时业务带宽较高,请关注您业务源站的负载和出口带宽是否存在瓶颈,如存在瓶颈风险,可以尝试子目录刷新或具体URL刷新。
- 刷新URL时,需要精确到具体请求链接,如果您业务请求时,浏览器或客户端主动进行了urlencode(百分号编码)等编码操作,需要提交编码后的具体链接。
- 刷新缓存后,如果仍访问到旧文件,可以先检查 刷新任务是否执行成功、本地浏览器缓存是否已禁用。
刷新验证
刷新缓存后,您可以在操作记录中查看执行结果,确认执行成功后,清空、禁用本地浏览器缓存,或使用浏览器的无痕模式测试是否访问到最新文件内容。
除了直接从文件内容上判断是否变化外,您还可以在刷新访问后首次访问资源URL时,通过 CDN 响应头中的 X-Cache 信息判断是否命中缓存。下图为通过 chrome开发者工具(右键-检查-network)抓包的结果,您也可以通过curl进行测试。
- Via:内容路径中能够看到两个 M,代表L1节点和L2节点均 MISS 。
- X-cache:HIT(命中)/ MISS(未命中)。
- X-Swift-SaveTime:缓存在节点上保存的时间,零时区(北京时间+8H)。缓存刷新后,该字段时间应不早于提交刷新任务的时间。
预热功能
上文我们提到,CDN刷新功能的作用主动将源站对应的资源缓存到CDN节点上,用于减少回源时间消耗。
默认情况下,CDN仅在有终端用户触发访问对应URL时才会回源拉取资源,因此,初次访问资源的客户无法享受到加速效果。
如果源站的响应速度不佳,可能会导致首次访问资源时的客户体验较差,如果我们希望在没有用户主动访问的情况下,提前将缓存部署到CDN节点上,那么就需要使用到CDN的预热功能。
预热方式
登录CDN控制台后,在左侧导航栏单击刷新预热,在刷新缓存/预热缓存页签,提交预热任务。
在预热的操作方式中,仅支持URL进行预热,即预热时,需要指定具体的URL链接。
使用限制
- 默认情况下,一个账号每日最多可以提交1000条URL预热任务,如果您账号的日带宽峰值大于200 Mbps,可通过配额管理申请提升每日配额(参考上文刷新额度的申请方式),阿里云将根据您业务的实际需求进行评估和配置。
- 单次提交上限:每次最多可以提交100条URL预热任务。
- 预热队列规则:每个账号的预热队列最大为50000条URL,CDN根据URL提交的先后顺序进行预热,当预热队列中未完成的任务达到了50000条URL时,阿里云CDN将会采取排队机制(即完成排序最前的一条URL预热后才可以继续提交下一条URL预热)完成预热。
注意事项
- 预热时不会由所有边缘节点直接回源,仅由CDN父层节点进行回源,大量文件需要预热时请关注源站负载及出口带宽瓶颈,如存在瓶颈风险,可以尝试分多个批次执行预热任务。
- CDN不支持提交目录预热,如果您需要对某个目录的内容预热,需要先列举下该目录下的所有URL链接后,再进行批量提交。
- 预热任务的执行速度与需要预热资源的文件平均大小、源站响应速度有关,文件平均大小越小,源站响应速度越快,预热速度越快,反之越慢。
- 预热URL时,需要精确到具体请求链接,如果您业务请求时,浏览器或客户端主动进行了urlencode(百分号编码)等编码操作,需要提交编码后的具体链接。
- 预热功能无法替代缓存刷新,如源站文件发生变更,先提交刷新后再进行预热,已有缓存的节点不会执行覆盖。
预热验证
预热缓存后,您可以在操作记录中查看执行结果,确认执行成功后,您可以通过访问资源URL时,通过 CDN 响应头中的via 信息判断是否命中缓存。下图为通过 chrome开发者工具(右键-检查-network)抓包的结果,您也可以通过curl进行测试。
Via:内容路径中能够看到 cachex.l2xxx(代表父层节点)中有出现H,则代表父层节点已预热。
小提示:默认情况下,CDN仅预热到内部的父层节点,边缘触发访问时,由CDN边缘节点回父层节点拉取缓存,因此首次访问资源时,您可能会看到X-cache显示MISS,该字段不影响预热成功与否。
CDN回源OSS自动刷新功能
当您的CDN域名源站设置为阿里云OSS域名时,您可以在OSS产品控制台-Bucket列表中选择存储空间-传输管理-域名管理中,看到已经开启CDN加速的域名,页面中如下图所示,提供了 CDN 缓存自动刷新 功能,点击按钮开启后,OSS将对文件内容可能发生变化的动作主动提交对文件URL的刷新请求。
CDN回源其他源站时实现自动刷新/预热
如果您的源站是Web服务器等自行维护的业务源,如果想实现自动刷新/预热功能,需要两个基本要素:
- 通过阿里云SDK对接 CDN 刷新/预热的API接口
- 明确业务的文件变更逻辑,例如:
- 刷新:文件删除、文件内容更新等逻辑动作
- 预热:文件上传
基于上述两个基本要素,业务逻辑中需要在触发变更动作的逻辑中,主动发起对CDN 刷新/预热API接口的调用,提交相应的任务信息。或者您也可以选择借助文档中提供的刷新预热自动化工具 ,通过命令行的方式定期/触发式执行任务。
如果您期望自行在业务中对接接口实现高度定制化的逻辑,您可以在CDN官方文档CDN - API参考 - 刷新预热目录中找到相关的接口说明文档,例如:刷新节点上的文件内容、预热源站内容到缓存节点等。
首次对接阿里云CDN的API接口时,您可以在API文档中找到OpenAPI调试入口进行调试,代码示例的完整工程可以在右侧选择后下载,示例工程跑通后,就可以在业务中对接口进行集成了。
结束
至此,CDN 刷新和预热功能的介绍及使用部分已经结束,在下个章节中,我们会继续学习安全防护相关内容:
- 访问权限控制功能
- 带宽上限阈值配置
为了防止业务链接被盗用、恶意访问产生巨额流量,实现对访客身份的识别和过滤,从而限制访问CDN资源的用户,提升CDN的安全性,建议您继续阅读下一章节的内容。
更多边缘云产品资讯欢迎访问【阿里云边缘云】或扫码关注【阿里云Edge Plus】
边缘云 开启分布式云网融合新时代