这篇文章是针对这个知乎问题的回答。
内容分发网络,也即CDN(Content Delivery Network)。
如果你看过云服务商的介绍,对这个技术,可能会看到类似于网站访问全球加速、边缘计算等高大上词汇。
你可能会看到案例,告诉你 CDN 可以将原先访问速度在秒级、几百毫秒的网站,直接降低到几十毫秒,用户无感的程度。
还有些时候,你会看到宣传,说 CDN 帮助网站挡住了海量 DDoS 网络攻击,大幅降低网站运行成本。

你觉得这样的技术高级不高级?
可如果我说,这项技术其实就是把网站文件复制个几十几百份,放在全国/全球各地呢?
内容分发网络的兴起,本质上是因为许多网站上的信息以静态资源为主。
所谓静态资源,主要指网站上的图片、视频,以及网页本身的 html、css、javascript 文件。
这些文件中的大部分,特别是图片视频这种类型的,在上传到网络上后基本不需要再做后续更改,所以被称为静态资源。
既然是静态资源,那为什么还一定要强求纽约的用户发送的网络请求飘洋过海到北京的服务器呢?我们直接把资源摆在用户家门口岂不是方便很多。
你看,这就是所谓内容分发网络的原理,本质上就是复制黏贴式的缓存。
同样的静态资源在全球各地多复制几份,用户请求获取资源的时候,根据用户访问的 IP 地址,从最近的位置的缓存节点调配资源。这的确能起到加速网站加载速度的效果。
也就是说,你现在看到的这个问题下面图文并茂的回答,说不定获取网页、图片的网络请求根本没离开你所在的城市,这才让你在刷知乎的体验如此丝滑~

虽然说穿了 CDN 就是复制黏贴,但是如果我们真的深入进去来看其实这项技术往深了看还是可以很复杂的。
比如,在某些特定的场景下,你访问距离你最近的通信链路刚好就很拥挤,反倒是看起来离的更远的某个边缘节点访问速度更快。
面对这种情况,这就要求 CDN 厂商需要有更复杂的调度策略,对于实时网络质量有着通盘了解,调配正确的节点给正确的用户。
再比如,虽然说是静态资源,有些时候这些资源还是会发生改变的。
这时候 CDN 需要在上游资源发生变化的时候及时反映这种变化,确保用户能够看到正确的内容,这就对需要 CDN 厂商对资源缓存时间要有更精准的控制。
此外,随着现在技术水平的发展,边缘节点能做的事情不仅仅是加载静态资源,某些原先认为必须要由中央节点完成的后端逻辑,现在也可以下放到边缘完成。这其中代表服务包括 Cloudflare Workers, Lambda@Edge。
边缘计算的概念,随着时间的推移,正在逐渐超脱出原先简单的含义,变得愈加丰富精彩。
这么看来,这个简单粗暴的技术,其实真要说有些技术含量,多少还是有点道理的嘛。

好,现在你知道 CDN 的原理了——它就像在每条街上克隆一家连锁超市。但千万别告诉你的老板,他每年花几百万买的“全球智能加速”,实际是多买几台复印机。
注:图片源自网络,如侵权请联系删除。