秒懂边缘云 | CDN基础入门:CDN缓存刷新与预热

·  阅读 122
秒懂边缘云 | CDN基础入门:CDN缓存刷新与预热

作者:辰舒

在上个章节中我们学习了CDN的缓存应当如何配置,并提及在文件变化但CDN缓存未过期时,我们可以通过CDN的刷新功能更新节点缓存,那么CDN刷新功能具体应当如何使用呢?

除了缓存内容的更新,CDN缓存是否可以在未触发访问时提前部署到节点来达到缩短请求中的回源耗时呢?

本章节中我们将为您介绍 CDN刷新/预热 功能如何理解及使用,功能的注意事项及使用限制,最终效果验证等内容。

准备工作

1.已经添加完成的CDN域名

2.阿里云CDN控制台。

本章节内容大纲

  • 刷新功能的含义、使用、限制、注意事项,如何验证刷新成功。
  • 预热功能的含义、使用、限制、注意事项,如何验证预热成功。
  • CDN回源OSS时如何实现自动化刷新
  • CDN回源其他源站时如何实现自动化刷新、预热逻辑

功能说明

  • 刷新:
    • 作用:强制删除CDN所有节点上的缓存资源,用于更新CDN缓存内容。
    • 效果:刷新缓存后,当您向CDN节点请求资源时,CDN会直接回源站获取对应的资源并返回给您,同时将资源重新缓存到CDN节点。
  • 预热:
    • 作用:主动将源站对应的资源缓存到CDN节点上,用于减少回源时间消耗。
    • 效果:预热缓存后,当您首次请求资源时,即可直接从CDN节点获取到对应的资源内容,无需再回源站获取。

下表列出了刷新和预热功能常见的适用场景。

功能适用场景
刷新- 资源更新和发布源站的旧资源更新或升级后,为避免用户仍访问到旧的缓存资源,可通过提交对应资源的URL或目录进行刷新,用户即可直接访问到最新的资源并缓存至CDN节点。- 违规资源清理如果您的源站存在使用限制中提及的不合规内容,当您删除源站资源后,由于CDN节点存在缓存,资源仍可以被访问到,可通过URL刷新删除缓存资源。
预热- 运营活动运营一个大型活动时,提前将活动页涉及到的静态资源预热至CDN加速节点,活动开始后用户访问的所有静态资源均已缓存至CDN加速节点,由加速节点直接响应。- 安装包发布新版本安装包或升级包发布前,提前将资源预热至CDN加速节点,产品正式上线后,海量用户的下载请求将直接由CDN加速节点响应,提升下载速度,大幅度降低源站压力,提升用户体验。

刷新功能

上文我们提到,CDN刷新功能的作用是强制删除CDN所有节点上的缓存资源,用于更新CDN缓存内容。

当源站的相同文件名的内容更新后,如果CDN缓存的内容没有超出其缓存可用时间,CDN默认不会主动回源拉取的,需要主动通知CDN更新缓存才会触发回源拉取更新的动作。

刷新方式

登录CDN控制台后,在左侧导航栏单击刷新预热,在刷新缓存/预热缓存页签,提交刷新任务。

image.png

在刷新的操作方式中,主要有URL(常用)、目录(常用)、正则三种方式:

image.png

使用限制

默认情况下,CDN限制提交每日的刷新总量、单次提交刷新数量、每分钟提交数量。如果您账号的日带宽峰值超过调整阈值,可参考配额管理申请提升每日URL刷新/目录刷新配额,阿里云将根据您业务的实际需求进行评估和配置。

刷新方式默认限制调整阈值申请入口
URL一个账号每日最多可以提交10000条URL刷新,每次最多可以提交1000条URL刷新,单个域名每分钟最多可以提交1000条URL刷新。200 Mbps配额中心
目录一个账号每日最多可以提交100个目录刷新,一次可全部提交,目录刷新包含子目录。如果您提升了每日配额,每次最多可以提交1000条目录刷新。200 Mbps配额中心
正则一个账号每日最多可以提交20个正则刷新(每次最多提交一个)。10 Gbps工单

小提示:

配额中心入口:控制台搜索产品「配额中心」,左侧导航栏选择产品列表 > 通用配额产品类目下拉框里选择视频与CDN,单击CDN进入产品配额申请页面,您可以根据需要完成操作。

image.png

注意事项

  1. 如果您需要清空域名下所有缓存,提交根目录刷新即可,例如 www.example.com/ ,但需要注意目录刷新时,可能会导致CDN大量缓存失效,命中率下降,回源率升高,如果实时业务带宽较高,请关注您业务源站的负载和出口带宽是否存在瓶颈,如存在瓶颈风险,可以尝试子目录刷新或具体URL刷新。
  2. 刷新URL时,需要精确到具体请求链接,如果您业务请求时,浏览器或客户端主动进行了urlencode(百分号编码)等编码操作,需要提交编码后的具体链接。
  3. 刷新缓存后,如果仍访问到旧文件,可以先检查 刷新任务是否执行成功、本地浏览器缓存是否已禁用。

刷新验证

刷新缓存后,您可以在操作记录中查看执行结果,确认执行成功后,清空、禁用本地浏览器缓存,或使用浏览器的无痕模式测试是否访问到最新文件内容。

除了直接从文件内容上判断是否变化外,您还可以在刷新访问后首次访问资源URL时,通过 CDN 响应头中的 X-Cache 信息判断是否命中缓存。下图为通过 chrome开发者工具(右键-检查-network)抓包的结果,您也可以通过curl进行测试。

  • Via:内容路径中能够看到两个 M,代表L1节点和L2节点均 MISS 。
  • X-cache:HIT(命中)/ MISS(未命中)。
  • X-Swift-SaveTime:缓存在节点上保存的时间,零时区(北京时间+8H)。缓存刷新后,该字段时间应不早于提交刷新任务的时间。

image.png

预热功能

上文我们提到,CDN刷新功能的作用主动将源站对应的资源缓存到CDN节点上,用于减少回源时间消耗。

默认情况下,CDN仅在有终端用户触发访问对应URL时才会回源拉取资源,因此,初次访问资源的客户无法享受到加速效果。

如果源站的响应速度不佳,可能会导致首次访问资源时的客户体验较差,如果我们希望在没有用户主动访问的情况下,提前将缓存部署到CDN节点上,那么就需要使用到CDN的预热功能。

预热方式

登录CDN控制台后,在左侧导航栏单击刷新预热,在刷新缓存/预热缓存页签,提交预热任务。

image.png

在预热的操作方式中,仅支持URL进行预热,即预热时,需要指定具体的URL链接。

使用限制

  1. 默认情况下,一个账号每日最多可以提交1000条URL预热任务,如果您账号的日带宽峰值大于200 Mbps,可通过配额管理申请提升每日配额(参考上文刷新额度的申请方式),阿里云将根据您业务的实际需求进行评估和配置。
  2. 单次提交上限:每次最多可以提交100条URL预热任务。
  3. 预热队列规则:每个账号的预热队列最大为50000条URL,CDN根据URL提交的先后顺序进行预热,当预热队列中未完成的任务达到了50000条URL时,阿里云CDN将会采取排队机制(即完成排序最前的一条URL预热后才可以继续提交下一条URL预热)完成预热。

注意事项

  1. 预热时不会由所有边缘节点直接回源,仅由CDN父层节点进行回源,大量文件需要预热时请关注源站负载及出口带宽瓶颈,如存在瓶颈风险,可以尝试分多个批次执行预热任务。
  2. CDN不支持提交目录预热,如果您需要对某个目录的内容预热,需要先列举下该目录下的所有URL链接后,再进行批量提交。
  3. 预热任务的执行速度与需要预热资源的文件平均大小、源站响应速度有关,文件平均大小越小,源站响应速度越快,预热速度越快,反之越慢。
  4. 预热URL时,需要精确到具体请求链接,如果您业务请求时,浏览器或客户端主动进行了urlencode(百分号编码)等编码操作,需要提交编码后的具体链接。
  5. 预热功能无法替代缓存刷新,如源站文件发生变更,先提交刷新后再进行预热,已有缓存的节点不会执行覆盖。

预热验证

预热缓存后,您可以在操作记录中查看执行结果,确认执行成功后,您可以通过访问资源URL时,通过 CDN 响应头中的via 信息判断是否命中缓存。下图为通过 chrome开发者工具(右键-检查-network)抓包的结果,您也可以通过curl进行测试。

Via:内容路径中能够看到 cachex.l2xxx(代表父层节点)中有出现H,则代表父层节点已预热。

image.png

小提示:默认情况下,CDN仅预热到内部的父层节点,边缘触发访问时,由CDN边缘节点回父层节点拉取缓存,因此首次访问资源时,您可能会看到X-cache显示MISS,该字段不影响预热成功与否。

CDN回源OSS自动刷新功能

当您的CDN域名源站设置为阿里云OSS域名时,您可以在OSS产品控制台-Bucket列表中选择存储空间-传输管理-域名管理中,看到已经开启CDN加速的域名,页面中如下图所示,提供了 CDN 缓存自动刷新 功能,点击按钮开启后,OSS将对文件内容可能发生变化的动作主动提交对文件URL的刷新请求。

image.png

CDN回源其他源站时实现自动刷新/预热

如果您的源站是web服务器等自行维护的业务源,如果想实现自动刷新/预热功能,需要两个基本要素:

  1. 通过阿里云sdk对接 CDN 刷新/预热的api接口
  2. 明确业务的文件变更逻辑,例如:
  • 刷新:文件删除、文件内容更新等逻辑动作
    复制代码
  • 预热:文件上传
    复制代码

基于上述两个基本要素,业务逻辑中需要在触发变更动作的逻辑中,主动发起对 CDN 刷新/预热api接口的调用,提交相应的任务信息。

或者您也可以选择借助文档中提供的 刷新预热自动化工具 ,通过命令行的方式定期/触发式执行任务。

image.png

如果您期望自行在业务中对接接口实现高度定制化的逻辑,您可以在CDN官方文档 CDN - API参考 - 刷新预热 目录中找到相关的接口说明文档,例如:刷新节点上的文件内容、预热源站内容到缓存节点 等。

首次对接阿里云CDN的API接口时,您可以在API文档中找到OpenAPI调试入口进行调试,代码示例的完整工程可以在右侧选择后下载,示例工程跑通之后,您就可以在业务中对接口进行集成了。

image.png

image.png

结束

至此,CDN 刷新和预热功能的介绍及使用部分已经结束,在下个章节中,我们会继续学习安全防护相关内容:

  • 访问权限控制功能
  • 带宽上限阈值配置

为了防止业务链接被盗用、恶意访问产生巨额流量,实现对访客身份的识别和过滤,从而限制访问CDN资源的用户,提升CDN的安全性,建议您继续阅读下一章节的内容。


《秒懂边缘云》系列内容持续更新中,欢迎关注公众号【阿里云Edge Plus】了解最新内容

秒懂边缘云 | 快速入门CDN原理及架构 - 掘金 (juejin.cn)

秒懂边缘云 | CDN基础入门:CDN域名添加 - 掘金 (juejin.cn)

秒懂边缘云 | CDN基础入门:CDN解析配置 - 掘金 (juejin.cn)

秒懂边缘云 | CDN基础入门:HTTPS配置 - 掘金 (juejin.cn)

秒懂边缘云 | CDN基础入门:CDN缓存配置及优化 - 掘金 (juejin.cn)

秒懂边缘云 | CDN基础入门:CDN缓存刷新与预热 - 掘金 (juejin.cn)

分类:
后端
标签:
收藏成功!
已添加到「」, 点击更改