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.comwww.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的时候,别人不会,而你恰好又会,这就是你的优势。升职加薪,赢取白富美,走上人生巅峰,你的人生轨迹也许就因为看了这篇文章而改变。

相关推荐
GDAL8 分钟前
npm入门教程1:npm简介
前端·npm·node.js
小白白一枚1111 小时前
css实现div被图片撑开
前端·css
薛一半1 小时前
PC端查看历史消息,鼠标向上滚动加载数据时页面停留在上次查看的位置
前端·javascript·vue.js
@蒙面大虾1 小时前
CSS综合练习——懒羊羊网页设计
前端·css
MarcoPage1 小时前
第十九课 Vue组件中的方法
前端·javascript·vue.js
.net开发1 小时前
WPF怎么通过RestSharp向后端发请求
前端·c#·.net·wpf
**之火2 小时前
Web Components 是什么
前端·web components
顾菁寒2 小时前
WEB第二次作业
前端·css·html
前端宝哥2 小时前
10 个超赞的开发者工具,助你轻松提升效率
前端·程序员
你好龙卷风!!!2 小时前
vue3 怎么判断数据列是否包某一列名
前端·javascript·vue.js