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

相关推荐
编程零零七2 小时前
Python数据分析工具(三):pymssql的用法
开发语言·前端·数据库·python·oracle·数据分析·pymssql
(⊙o⊙)~哦4 小时前
JavaScript substring() 方法
前端
无心使然云中漫步4 小时前
GIS OGC之WMTS地图服务,通过Capabilities XML描述文档,获取matrixIds,origin,计算resolutions
前端·javascript
Bug缔造者5 小时前
Element-ui el-table 全局表格排序
前端·javascript·vue.js
xnian_5 小时前
解决ruoyi-vue-pro-master框架引入报错,启动报错问题
前端·javascript·vue.js
Karoku0666 小时前
【网站架构部署与优化】web服务与http协议
linux·运维·服务器·数据库·http·架构
麒麟而非淇淋6 小时前
AJAX 入门 day1
前端·javascript·ajax
2401_858120536 小时前
深入理解MATLAB中的事件处理机制
前端·javascript·matlab
阿树梢6 小时前
【Vue】VueRouter路由
前端·javascript·vue.js
随笔写7 小时前
vue使用关于speak-tss插件的详细介绍
前端·javascript·vue.js