作者:辰舒

在上个章节中我们学习了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控制台后,在左侧导航栏单击刷新预热,在刷新缓存/预热缓存页签,提交刷新任务。

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

刷新方式

适合场景

说明

示例

URL

刷新某个或某些具体URL对应的文件内容。

  • 输入的URL必须带有http://https://
  • 刷新多个URL时,请按照一行一个URL进行输入。

http://www.example.com/test.mp4

http://www.example.com/v1/test.js

目录

刷新某个或某些路径下所有文件内容的缓存。

  • 输入的目录必须以http://https://开头,以正斜线(/)结尾。
  • 刷新多个目录时,请按照一行一个目录进行输入。

http://www.example.com/

http://www.example.com/video/

http://www.example.com/image/

正则

提交含有正则表达式的URL,对符合该表达式的URL进行大批量刷新。

  • 仅支持在URL中填入这4种正则表达式:[0-9][a-z][^/]*.* ,请您不要输入这4种固定搭配以外的正则表达式。
  • 刷新多个正则路径时,请按照一行一个规则进行输入。

http://www.example.com/[0-9][a-z].*.jpg

使用限制

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

刷新方式

默认限制

调整阈值

申请入口

URL

一个账号每日最多可以提交10000条URL刷新,每次最多可以提交1000条URL刷新,单个域名每分钟最多可以提交1000条URL刷新。

200 Mbps

配额中心

目录

一个账号每日最多可以提交100个目录刷新,一次可全部提交,目录刷新包含子目录。如果您提升了每日配额,每次最多可以提交1000条目录刷新。

200 Mbps

配额中心

正则

一个账号每日最多可以提交20个正则刷新(每次最多提交一个)。

10 Gbps

工单

小提示:

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

注意事项

  1. 如果您需要清空域名下所有缓存,提交根目录刷新即可,例如 http://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)。缓存刷新后,该字段时间应不早于提交刷新任务的时间。

预热功能

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

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

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

预热方式

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

在预热的操作方式中,仅支持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,则代表父层节点已预热。

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

CDN回源OSS自动刷新功能

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

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

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

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

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

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

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

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

结束

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

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

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

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

  1. 秒懂边缘云丨快速入门边缘云

    简介:"秒懂边缘云"是阿里云开发者社区 X 阿里云边缘云团队面向企业及个人开发者联合打造系列直播,围绕边缘云的行业发展趋势.产品定义.应用场景,并结合阿里云边缘云深入浅出讲解,让广 ...

  2. 秒懂边缘云 | 边缘云技术进阶

    简介:"秒懂边缘云"第二期来了,9月15日下午4点不见不散! 9月8号,阿里云边缘云高级产品专家鸠舍老师带领大家揭开边缘云的神秘面纱,通过简单易懂的方式了解边缘云的发展趋势,熟悉边 ...

  3. 秒懂边缘云 | 3场直播带你了解下个技术风口

    根据Gartner预测,到2025年,超过50%的组织将在其选择的地点使用分布式云,从而实现转型业务模式.分布式云服务正在国内掀起一股热潮,国内行业巨头布局分布式云.2021年5月28日云峰会上,阿里 ...

  4. 秒懂边缘云 | CDN基础入门:CDN缓存配置及优化

    作者:辰舒 使用CDN加速静态资源时,CDN会将源站上的资源缓存到距离客户端最近的CDN节点上.当您访问该静态资源时,可直接从CDN的缓存节点上获取,有效避免通过较长的链路回源,提高资源访问效率.在本 ...

  5. 秒懂边缘云 | CDN基础入门:访问控制及带宽阈值

    作者:辰舒 在通过CDN对外提供服务时,为了保障资源的安全性,我们建议对请求进行访问权限控制,避免被恶意用户请求,提升业务在CDN上的安全性. 准备工作 1.已经添加完成的CDN域名 2.阿里云CDN ...

  6. 零基础学python视频百度云-零基础入门学习Python 小甲鱼视频教程

    000愉快的开始 001我和Python的第一次亲密接触 002用Python设计第一个游戏 003小插曲之变量和字符串 004改进我们的小游戏 005闲聊之Python的数据类型 006Pyhon之 ...

  7. 简述CDN 什么是CDN 为什么要用CDN CDN适用场景

    一.CDN的基本原理和基础架构 CDN是将源站内容分发至最接近用户的节点,使用户可就近取得所需内容,提高用户访问的响应速度和成功率.解决因分布.带宽.服务器性能带来的访问延迟问题,适用于站点加速.点播 ...

  8. 阿里云边缘云ENS再升级,四大场景应用加速产业数字化落地

    简介:云栖大会 | 于10月21日上午举办的边缘云应用升级与技术创新论坛中,阿里云边缘云ENS产品全面升级,从边缘云产品.技术.行业应用等维度全面阐述阿里云在边缘计算领域的技术积累.产品&解决 ...

  9. 阿里云佘俊泉:创新探索不停,边缘云持续为客户创造价值

    简介:在12月15日上午举办的分布式云领袖论坛中,阿里云边缘云产品负责人佘俊泉先生发表了<阿里云边缘云产品创新与场景探索>的主题演讲,分享了阿里云在边缘云领域的探索和思考,如何从产品演进. ...

最新文章

  1. Science公布2020十大科学突破,AI预测蛋白结构等上榜 | AI日报
  2. Linux下对于inode的理解
  3. shujufenxi:一季度中国人每天存700亿元!“报复性存款”能带来消费吗?
  4. ToolBar Rebar CommandBar
  5. 《IBM-PC汇编语言程序设计》(第2版)【沈美明 温冬婵】——第七章——自编解析与答案
  6. centos内核编译与其签名机制
  7. 新年春节海报模板|中国风艺术元素,就是不一样!
  8. Python数据结构与算法(3.5)——双端队列
  9. 启动vue项目的时候报错提示To install it, you can run: npm install --save core-js/modules/es.regexp.dot
  10. PDF格式转换器下载免费版
  11. STM32固件库详解
  12. matlab norm函数使用_「matlabnorm」matlab中norm函数的用法 - 金橙教程网
  13. mysql d是什么意思_是mysqld意思
  14. css盒心形的代码过程,如何使用CSS和D3实现用文字组成的心形动画效果(附代码)...
  15. 海康大华安防网络摄像头Onvif、RTSP网络无插件直播流媒体服务解决方案EasyNVR表单重复提交的优化方案
  16. php安装xmeet,XMeet下载-XMeet官方版下载V1.8.4-99wo下载站
  17. 乐视:基于Docker的RDS,我们是这样做的
  18. linux怎么滑动命令行窗口_如何在Linux命令行界面愉快进行性能测试
  19. S03_CH02_AXI_DMA PL发送数据到PS
  20. 很不错的刷Alexa排名的网站(转)

热门文章

  1. Windows平台使用Bazel编译TensorFlow详细流程
  2. 上帝公式--人类挑战上帝的百年历史
  3. js数组删除只删除一半
  4. 如何理解区块链的分布式存储
  5. 【C++深陷】之“decltype”
  6. 字符串前面加个r‘是什么意思
  7. 进入大学以后他对计算机很感兴趣英语,上海历届春高考英语句子翻译汇编
  8. Unity3D——粒子光环
  9. 【毕业季】走一步看一步?一个自动化er对大学四年的思考
  10. 验光 php程序,完整验光过程的三个阶段