前言

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

【前端词典】CDN 带来这些性能优化(进阶必知)_java

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 带来这些性能优化(进阶必知)_java_02

京东【前端词典】CDN 带来这些性能优化(进阶必知)_java_03

掘金【前端词典】CDN 带来这些性能优化(进阶必知)_java_04我们随手打开一个网站点开一个静态资源,可以看到它都是从 CDN 服务器上请求来的。可以看出 "静态资源走 CDN" 是最佳实践。

CDN & Cookie

【前端词典】CDN 带来这些性能优化(进阶必知)_java_05

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

静态资源往往并不需要 Cookie

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

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

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

【前端词典】CDN 带来这些性能优化(进阶必知)_java_06

最后

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

【前端词典】CDN 带来这些性能优化(进阶必知)_java_07