秒懂边缘云 | CDN基础入门: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控制台后,在左侧导航栏单击刷新预热,在刷新缓存/预热缓存页签,提交刷新任务。


8.3.1.png


在刷新的操作方式中,主要有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进入产品配额申请页面,您可以根据需要完成操作。

image.gif

注意事项


  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)缓存刷新后,该字段时间应不早于提交刷新任务的时间。


8.3.2.png

预热功能


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


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


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


预热方式


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


8.3.3.png

image.gif

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


8.3.4.png

image.gif

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


CDN回源OSS自动刷新功能


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


8.3.5.png


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


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

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


基于上述两个基本要素,业务逻辑中需要在触发变更动作的逻辑中,主动发起对CDN 刷新/预热API接口的调用,提交相应的任务信息。或者您也可以选择借助文档中提供的刷新预热自动化工具 ,通过命令行的方式定期/触发式执行任务。


8.3.6.png


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


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


image.gif8.3.7.png

8.3.8.png

结束


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

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


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



更多边缘云产品资讯欢迎访问【阿里云边缘云】或扫码关注【阿里云Edge Plus】

qrcode_for_gh_0cf3488f3334_258.jpg

边缘云 开启分布式云网融合新时代

相关实践学习
Serverless极速搭建Hexo博客
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
目录
相关文章
|
7月前
|
缓存 NoSQL Java
SpringBoot实现缓存预热的几种常用方案
SpringBoot实现缓存预热的几种常用方案
|
7月前
|
缓存 算法 开发者
【Conan 入门问题】Conan 删除本地缓存后的解决方法
【Conan 入门问题】Conan 删除本地缓存后的解决方法
302 0
|
2月前
|
缓存 NoSQL 关系型数据库
redis和缓存及相关问题和解决办法 什么是缓存预热、缓存穿透、缓存雪崩、缓存击穿
本文深入探讨了Redis缓存的相关知识,包括缓存的概念、使用场景、可能出现的问题(缓存预热、缓存穿透、缓存雪崩、缓存击穿)及其解决方案。
194 0
redis和缓存及相关问题和解决办法 什么是缓存预热、缓存穿透、缓存雪崩、缓存击穿
|
2月前
|
缓存 NoSQL Java
springboot的缓存和redis缓存,入门级别教程
本文介绍了Spring Boot中的缓存机制,包括使用默认的JVM缓存和集成Redis缓存,以及如何配置和使用缓存来提高应用程序性能。
120 1
springboot的缓存和redis缓存,入门级别教程
|
3月前
|
缓存 监控 负载均衡
在使用CDN时,如何配置缓存规则以优化性能
在使用CDN时,如何配置缓存规则以优化性能
|
3月前
|
缓存 JavaScript
vue使用keep-alive实现页面前进刷新,后退缓存,完美运行无bug
vue使用keep-alive实现页面前进刷新,后退缓存,完美运行无bug
558 1
|
4月前
|
存储 缓存 监控
DNS 定期刷新缓存
【8月更文挑战第18天】
160 2
|
4月前
|
缓存 Java Spring
Spring缓存实践指南:从入门到精通的全方位攻略!
【8月更文挑战第31天】在现代Web应用开发中,性能优化至关重要。Spring框架提供的缓存机制可以帮助开发者轻松实现数据缓存,提升应用响应速度并减少服务器负载。通过简单的配置和注解,如`@Cacheable`、`@CachePut`和`@CacheEvict`,可以将缓存功能无缝集成到Spring应用中。例如,在配置文件中启用缓存支持并通过`@Cacheable`注解标记方法即可实现缓存。此外,合理设计缓存策略也很重要,需考虑数据变动频率及缓存大小等因素。总之,Spring缓存机制为提升应用性能提供了一种简便快捷的方式。
56 0
|
4月前
|
缓存 中间件 数据库
Django入门到放弃之缓存及信号机制
Django入门到放弃之缓存及信号机制
|
4月前
|
域名解析 存储 缓存
破解 DNS 缓存的秘密:一个简单实验揭示定时刷新背后的惊人真相!
【8月更文挑战第27天】本文介绍DNS缓存管理的重要性及其实现方法。DNS缓存用于快速响应重复的域名解析请求,但因IP地址变动需定期刷新以确保信息准确。文章提供一个基于Python的示例脚本,模拟DNS缓存刷新过程,包括添加、查询记录以及清除过期项等功能。尽管实际环境中这些任务常由专业DNS服务软件自动处理,但该示例有助于理解DNS缓存的工作机制及其维护策略。
79 0

相关产品