前言

CDN的全称是 Content Delivery Network,即内容分发网络。CDN 是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN 的关键技术主要有内容存储和分发技术。—— 科学百科

CDN 存在的意义:

为了不让网络拥塞成为互联网发展的障碍。

举个例子

在讲 CDN 之前我们先看个生活实例:

在淘宝购物

我们在淘宝购物,大部分个人卖家只是在一个地方发货,江浙沪以外的地方好像收货都比较慢。

在京东购物

而我们在京东上买自营产品的话,它会根据我们的收货地点,在全国范围内找离我们最近、送达最快的仓库,不管我们在江浙沪,还是新疆西藏内蒙古,我们的收货时间都会大大减少。京东的物流体系就类似于 CDN。

从上面这个例子我们可以大致了解 CDN 的基本原理,即将相关静态资源放在各地的 CDN 服务器。

CDN 的优势

  1. CDN 节点解决了跨运营商和跨地域访问的问题,访问延时大大降低;

  2. 大部分请求在 CDN 边缘节点完成,CDN 起到了分流作用,减轻了源站的负载;

  3. 降低“广播风暴”的影响,提高网络访问的稳定性;节省骨干网带宽,减少带宽需求量。

访问速度快是电商网站取胜的必要法宝之一。

CDN 的核心点有两个: 一个是缓存,一个是回源。

缓存

将从根服务器请求来的资源按要求缓存。

回源

当有用户访问某个资源的时候,如果被解析到的那个 CDN 节点没有缓存响应的内容,或者是缓存已经到期,就会回源站去获取。没有人访问,CDN 节点不会主动去源站请求资源。

关键技术

  1. 内容发布:它借助于建立索引、缓存、流分裂、组播(Multicast)等技术,将内容发布或投递到距离用户最近的远程服务点(POP)处;

  2. 内容路由:它是整体性的网络负载均衡技术,通过内容路由器中的重定向(DNS)机制,在多个远程 POP 上均衡用户的请求,以使用户请求得到最近内容源的响应;

  3. 内容交换:它根据内容的可用性、服务器的可用性以及用户的背景,在POP的缓存服务器上,利用应用层交换、流分裂、重定向(ICP、WCCP)等技术,智能地平衡负载流量;

  4. 性能管理:它通过内部和外部监控系统,获取网络部件的状况信息,测量内容发布的端到端性能(如包丢失、延时、平均带宽、启动时间、帧速率等),保证网络处于最佳的运行状态。

前端往往认为 CDN 是不需要了解的知识。可是我们前端工程首先是软件工程师。多了解一些东西肯定是有益的。

CDN & 静态资源

静态资源本身具有访问频率高、承接流量大的特点,因此静态资源加载速度始终是前端性能的一个非常关键的指标。CDN 是静态资源提速的重要手段。

淘宝

京东

掘金我们随手打开一个网站点开一个静态资源,可以看到它都是从 CDN 服务器上请求来的。可以看出 "静态资源走 CDN" 是最佳实践。

CDN & Cookie

我们知道 Cookie 和域名是紧密联系的。即同一个域名下的所有请求,都会携带一个相同的 Cookie(设置不当就会非常大)。

静态资源往往并不需要 Cookie

携带的认证信息等,静态资源一般是不需要的。把静态资源和主页面置于不同的域名下,就可以完美地避免请求中携带不必要的 Cookie。

这也是 CDN 带来的另一个好处。

最后给大家放一张直观图,给大家对比下 CDN 服务部署前后的区别:

最后

如果你想进【大前端交流群】,关注公众号点击“交流加群”添加机器人自动拉你入群。关注我第一时间接收最新干货。


©著作权归作者所有:来自51CTO博客作者mb5ff592736e0cf的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 怎样在 Linux 中配置静态网络连接[每日前端夜话0x74]
  2. 想来微软实习吗?
  3. 尝鲜!微软首个AI量化投资开源平台Qlib上手体验!
  4. 10% + 10% = 0.11 ?是 bug 还是 feature ?微软开源的计算器项目告
  5. 大新闻!Python 之父重新出山,加入微软开发部
  6. GitHub 热门:微软新开源的 Python 静态类型检查器
  7. 又一套!微软在 GitHub 新发的 Python 视频资源
  8. PHP实现页面静态化、纯静态化及伪静态化
  9. PHP如何生成静态页面

随机推荐

  1. :如何安装apk文件在Android仿真器中
  2. 在 Android(安卓)上使用 XML
  3. Android Browser 支持屏蔽webaudio的功能
  4. android中的Selector的用法---主要是改变
  5. 导入旧版本Android项目时的“Unable to r
  6. Android平板电脑上的APP应用程序设计须知
  7. 【贪吃蛇—Java程序员写Android游戏】系
  8. Android安全机制--四大组件安全
  9. Android锁定横屏、竖屏和去标题栏、全屏
  10. android LinearLayout android:layout_we