CDN:为你的网页注入速度与魅力!

CDN是什么?

CDN (Content Delivery Network,即内容分发网络)指的是一组分布在各个地区的服务器。这些服务器存储着数据的副本,因此可以根据哪些服务器与用户距离最近,来满足数据的请求。 CDN 提供快速服务,较少受高流量影响。

使用CDN有什么好处?

  1. 分流,降低根服务器压力。
  2. 实现跨运营商、跨地域的全网覆盖,减少传输时间。
  3. 客户端连接代理服务器,可以隐藏根服务器IP,更安全。
  4. 一台服务器发生故障,系统会调用其他临近的健康服务器节点进行服务,更可靠。
  • 使用CDN前
  • 使用CDN后

CDN调度策略

用户访问代理服务器过程

  1. 访问域名www.dd.com
  2. 解析域名www.dd.com的ip,此处使用了CNAME,返回指向的域名

起初,人们通过IP互相访问,但是IP不方便记忆,所有有了域名。电脑路由器并不认识域名,所以访问域名后需要解析成IP供电脑访问。可以理解成指向关系 www.dd.com → 2.2.2.2

  1. 返回CNAME指向的域名www.dd.cdn.com

域名的别名,也是指向关系 www.dd.com → www.dd.cdn.com→2.2.2.2,当使用CDN时,访问自己的域名后,会通过CNAME转到CDN提供商服务器。

  1. 请求 www.dd.cdn.com 的解析
  2. 通过CDN服务商的DNS调度服务器返回CDN提供商的服务器IP(返回哪台服务器IP和调度策略有关)
  3. 本地DNS返回IP给用户
  4. 用户访问IP
  5. CDN服务器返回响应
  • 解析域名命令行
arduino 复制代码
// 不同系统使用不同指令查看域名解析地址
Windows : nslookup
Mac||Linux :dig 

常见调度策略

  • 负载均衡:负载均衡是一种基本的调度策略,它将流量均匀分配到不同的CDN节点上,以避免某个节点过载而影响用户体验。负载均衡可以根据节点的负载情况、带宽利用率、距离等指标来进行调度。

  • 近源优先:这种调度策略会选择距离用户最近的CDN节点来提供内容,以减少数据传输的延迟和网络拥塞。通常会使用地理位置信息或网络测量来确定用户与节点之间的距离。

  • 带宽优先:带宽优先策略会选择具有最高可用带宽的CDN节点来服务用户请求。这可以确保用户获得最快的下载速度和最佳的网络连接质量。

  • 延迟优先:延迟优先策略会选择具有最低延迟的CDN节点来提供内容。它可以通过测量用户与节点之间的往返时间(Round Trip Time,RTT)或其他网络延迟指标来进行调度。

  • 动态调度:动态调度策略会根据网络状况和节点负载实时调整流量分配。它可以根据实时监测的数据来动态选择最佳节点,并自动调整流量分配,以适应网络流量的变化。

CDN回源和缓存策略

回源

  1. 客户端请求代理服务器。
  2. 代理服务器判断是否有该资源缓存。
  3. 没有找到缓存资源,向根服务器发起请求,将请求到的资源按照缓存策略存储起来。这一步就叫做回源。已存在生效的缓存资源,跳过这一步。
  4. 返回缓存资源给客户端。

资源缓存规则

  • 基于文件扩展名:您可以配置CDN根据文件的扩展名来确定是否缓存资源。例如,您可以指定缓存所有以".jpg"、".css"或".js"结尾的文件。这可以用于静态资源的缓存,如图片、样式表和JavaScript文件。

  • 基于URL路径:您可以配置CDN根据URL路径来确定是否缓存资源。例如,您可以指定缓存所有以"/static/"或"/assets/"开头的URL路径的资源。这对于对特定目录下的资源进行缓存非常有用。

  • 基于HTTP请求头:CDN可以根据HTTP请求头信息来配置缓存规则。常见的请求头字段包括User-Agent、Accept-Encoding、Referer等。您可以根据这些请求头信息来决定是否缓存资源,以及如何缓存。

  • 基于HTTP响应头:CDN可以根据HTTP响应头信息来配置缓存规则。常见的响应头字段包括Cache-Control、Expires、Last-Modified等。您可以根据这些响应头信息来决定缓存的过期时间、缓存控制策略等。

  • 基于自定义标签:一些CDN提供商支持自定义标签,您可以将标签与特定的资源关联起来,并根据标签来配置缓存规则。这允许您更灵活地定义缓存策略,根据业务需求进行定制化配置。

常见缓存策略

  • 全局缓存策略(Global Cache Policy):适用于所有资源的默认缓存策略。可以设置默认的缓存时间、缓存行为和其他缓存规则。

  • 静态资源缓存策略(Static Resource Cache Policy):针对静态资源(如图片、CSS、JavaScript文件)的缓存策略。可以设置较长的缓存时间,以减少对源服务器的请求,提高访问速度。

  • 动态内容缓存策略(Dynamic Content Cache Policy):用于动态生成的内容(如API响应、个性化内容)的缓存策略。可以设置较短的缓存时间,以确保用户获取到最新的数据。

  • 缓存层级策略(Cache Tiering Policy):通过设置不同层级的缓存来提高缓存命中率和响应速度。可以配置边缘节点缓存和中心节点缓存,以实现更灵活的缓存策略。

  • 缓存验证策略(Cache Validation Policy):用于验证缓存是否仍然有效的策略。可以基于ETag、Last-Modified等响应头信息来验证资源是否发生了变化。

缓存刷新

CDN缓存刷新是指将CDN服务器上缓存的内容清除,并从源服务器重新获取最新的内容。这对于在源服务器上进行了更新或更改后,需要立即在CDN中生效的情况非常有用。刷新CDN可以确保用户能够访问到最新的内容,而不是访问CDN缓存中过期的内容。

常见的CDN缓存刷新方法包括:

  • 手动刷新:通过CDN提供商的管理界面或控制台,手动选择需要刷新的文件或目录,并执行刷新操作。这通常是最简单和常用的刷新方式。

  • API刷新:CDN提供商通常会提供API接口,您可以使用API来进行CDN刷新操作。通过调用相应的API方法,可以实现文件、目录或全站的刷新。

  • 命令行工具:某些CDN提供商可能提供命令行工具,您可以在本地或服务器上使用命令行工具执行CDN刷新操作。这对于自动化和批量刷新非常有用。

  • 缓存标记/时间戳:在源服务器上修改文件的缓存标记或时间戳,使CDN服务器检测到内容已更改,并自动刷新缓存。这通常需要与CDN提供商的缓存策略和配置配合使用。

缓存预热

CDN缓存预热是指在用户请求到达之前,提前将内容缓存在CDN节点上。通过CDN预热,可以将内容主动地缓存到CDN节点,以提高用户访问时的响应速度和性能。

常见的CDN缓存预热方法包括:

  • 手动预热:通过CDN提供商的管理界面或控制台,手动选择需要预热的文件或目录,并执行预热操作。这通常是最简单和常用的预热方式。

  • API预热:CDN提供商通常会提供API接口,您可以使用API来进行CDN预热操作。通过调用相应的API方法,可以实现文件、目录或全站的预热。

  • 命令行工具:某些CDN提供商可能提供命令行工具,您可以在本地或服务器上使用命令行工具执行CDN预热操作。这对于自动化和批量预热非常有用。

  • 链路预热:有些CDN提供商支持通过预热链接来实现预热。您可以将要预热的链接提供给CDN提供商,让其自动进行预热操作。

  • 定时预热:某些CDN提供商允许您设置预热任务的定时执行。您可以指定预热的时间和频率,以便在预定时间自动进行预热操作。

总结

虽然CDN平时用得很少,甚至你可能从来没有使用过,但是,但是哈;每一款成熟的产品基本上都是会使用到CDN的。等到哪一天你负责的项目需要接入CDN,或者说面试的时候,面试官问到CDN的时候,别人不会,而你恰好又会,这就是你的优势。升职加薪,赢取白富美,走上人生巅峰,你的人生轨迹也许就因为看了这篇文章而改变。

相关推荐
环境栈笔记7 分钟前
指纹浏览器检查代理失败怎么排查?先分清代理、网络和检测服务
前端·人工智能·后端·自动化
ShineWinsu11 分钟前
对于HTML:HTML常见标签的解析—下
前端·css·面试·html·标签·表单·emmet
恋猫de小郭13 分钟前
Kotlin 2.5 的 Companion 改造,对 KMP 的重要升级
android·前端·flutter
前端双越老师26 分钟前
程序员 1v1 访谈系列第二期:很焦虑但又不知道干啥
前端·ai编程·全栈
广州华水科技40 分钟前
北斗形变监测传感器在大坝安全监测中的应用与优势分析
前端
孔令飞1 小时前
如何学习Go
前端
HUIBUR科技1 小时前
AI 中枢,面向企业场景构建的 AI 智能体
前端·数据库·人工智能
怕浪猫1 小时前
给AI配一台电脑,开源版Muse来了,OpenMuse赶紧去二次开发吧
javascript·面试·github
随便写个软件1 小时前
【新版本】EasyExplorer资源管理器 3.12.0——地址栏重要更新
运维·服务器·前端·everything·资源管理器
Jack N1 小时前
【Strapi 系列之二】Collection / Single / Component 怎么选?Strapi 字段大全一篇讲透
前端·javascript·strapi