草庐IT

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

边缘云小编 2023-07-25 原文

作者:辰舒

在上个章节中我们学习了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. ruby - 如何在 Ubuntu 中清除 Ruby Phusion Passenger 的缓存? - 2

    我试过重新启动apache,缓存的页面仍然出现,所以一定有一个文件夹在某个地方。我没有“公共(public)/缓存”,那么我还应该查看哪些其他地方?是否有一个URL标志也可以触发此效果? 最佳答案 您需要触摸一个文件才能清除phusion,例如:touch/webapps/mycook/tmp/restart.txt参见docs 关于ruby-如何在Ubuntu中清除RubyPhusionPassenger的缓存?,我们在StackOverflow上找到一个类似的问题:

  2. ruby-on-rails - Ruby on Rails 计数器缓存错误 - 2

    尝试在我的RoR应用程序中实现计数器缓存列时出现错误Unknownkey(s):counter_cache。我在这个问题中实现了模型关联:Modelassociationquestion这是我的迁移:classAddVideoVotesCountToVideos0Video.reset_column_informationVideo.find(:all).eachdo|p|p.update_attributes:videos_votes_count,p.video_votes.lengthendenddefself.downremove_column:videos,:video_vot

  3. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

  4. 软件测试基础 - 2

    Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功

  5. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  6. 微信小程序开发入门与实战(Behaviors使用) - 2

    @作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors    1、什么是behaviors    2、behaviors的工作方式    3、创建behavior    4、导入并使用behavior    5、behavior中所有可用的节点    6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors    1、什么是behaviorsbehaviors是小程序中,用于实现

  7. 【Java入门】使用Java实现文件夹的遍历 - 2

    遍历文件夹我们通常是使用递归进行操作,这种方式比较简单,也比较容易理解。本文为大家介绍另一种不使用递归的方式,由于没有使用递归,只用到了循环和集合,所以效率更高一些!一、使用递归遍历文件夹整体思路1、使用File封装初始目录,2、打印这个目录3、获取这个目录下所有的子文件和子目录的数组。4、遍历这个数组,取出每个File对象4-1、如果File是否是一个文件,打印4-2、否则就是一个目录,递归调用代码实现publicclassSearchFile{publicstaticvoidmain(String[]args){//初始目录Filedir=newFile("d:/Dev");Datebeg

  8. ES基础入门 - 2

    ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear

  9. 【网络】-- 网络基础 - 2

    (本文是网络的宏观的概念铺垫)目录计算机网络背景网络发展认识"协议"网络协议初识协议分层OSI七层模型TCP/IP五层(或四层)模型报头以太网碰撞路由器IP地址和MAC地址IP地址与MAC地址总结IP地址MAC地址计算机网络背景网络发展        是最开始先有的计算机,计算机后来因为多项技术的水平升高,逐渐的计算机变的小型化、高效化。后来因为计算机其本身的计算能力比较的快速:独立模式:计算机之间相互独立。    如:有三个人,每个人做的不同的事物,但是是需要协作的完成。    而这三个人所做的事是需要进行协作的,然而刚开始因为每一台计算机之间都是互相独立的。所以前面的人处理完了就需要将数据

  10. 区块链入门教程(6)--WeBASE-Front节点前置服务安装 - 2

    文章目录1.任务背景2.任务目标3.相关知识点4.任务实操4.1安装配置JDK4.2启动FISCOBCOS4.3下载解压WeBASE-Front4.4拷贝sdk证书文件4.5启动节点4.6访问节点4.7检查运行状态5.任务总结1.任务背景FISCOBCOS其实是有控制台管理工具,用来对区块链系统进行各种管理操作。但是对于初学者来说,还是可视化界面更友好,本节就来介绍WeBASE管理平台,这是一款微众银行开源的自研区块链中间件平台,可以降低区块链使用的门槛,大幅提高区块链应用的开发效率。微众银行是腾讯牵头设立的民营银行,在国内民营银行里还是比较出名的。微众银行参与FISCOBCOS生态建设,一定

随机推荐