为啥使用 CDN(内容交付网络)? [复制]

Posted

技术标签:

【中文标题】为啥使用 CDN(内容交付网络)? [复制]【英文标题】:Why use a CDN (Content Delivery Network‎)? [duplicate]为什么使用 CDN(内容交付网络)? [复制] 【发布时间】:2016-03-23 16:10:27 【问题描述】:

我注意到大多数在线教程都使用 CDN,而不是仅仅在本地添加一个新文件(无论是 CSS 还是 jQuery)并以 <link href="~/Content/css/footer.css" rel="stylesheet" /> 的方式引用它。我读过它,但对于为什么要使用 CDN 仍然没有多大意义。除了为了更好的缓存,为什么要使用 CDN 而不是在本地编码文件并仅引用它?

【问题讨论】:

【参考方案1】:

它只是减少服务器负载

因此,战略布局可以减少互连、主干以及公共和私有对等点上的服务器负载,从而释放整体容量并降低交付成本。本质上,内容分布在多台服务器上,而不是将它们卸载到一台大型服务器上。

加快内容交付速度

由于 CDN 将服务器放置在尽可能靠近一组用户的位置,因此由于传输距离更短,延迟和数据包丢失被降至最低。理论上,内容离用户越近,交付越快。因此,用户在流式传输时将体验到更少的抖动、更少的网络尖峰以及整体改进的流式传输质量。由于可靠性,运营商可以提供高质量的内容、高水平的服务、低网络服务器负载,从而降低成本。

此外,许多 CDN 提供商提供 TCP 加速技术来提高性能,从而改善用户体验。由于 CDN 减少了延迟,因此加速与已经高性能的网络一起工作会产生爆炸性的内容。

100% 可用性

由于资产分布在多个区域,CDN 具有自动服务器可用性感知机制和即时用户重定向。因此,即使在大规模停电、硬件问题或网络问题期间,CDN 网站也能体验到 100% 的可用性。

并发用户数增加

策略性地将服务器放置在 CDN 中可以提高网络主干容量,这相当于在给定时间访问网络的用户数量显着增加。例如,如果有一个容量为 2 tb/s 的 100 GB/s 网络主干,则只能提供 100 GB/s。然而,使用 CDN,10 个服务器将在 10 个战略位置可用,然后可以提供 10 x 100 GB/s 的总容量。

控制资产交付

CDN 技术的另一个有益特性是授予对资产交付和网络负载的更多控制权。运营商能够提供实时负载统计、优化每个客户的容量、显示活动区域、指示哪些资产受欢迎,并向客户报告查看详细信息。这些细节非常重要,因为一旦将服务器源添加到 CDN,使用日志就会停用。

更多参考:link

【讨论】:

那么您会推荐 CDN 还是引用文件? 是的,但在某些方面,也有一些缺点,因为大多数组织使用第三方供应商来维护 CDN,所以总是存在支持可用性、文档的问题。【参考方案2】:

缓存是原因之一:如果我使用相同的 jquery 文件,例如google.com 可以,大多数访问我这边的用户都不需要加载它。这减少了我网页的加载时间。

另一个原因是 CDN-server 的全球分布。如果我想要在德国这里的图像,从美国服务器加载它比从德国服务器加载它需要更长的时间(因为延迟)。

【讨论】:

【参考方案3】:

许多网站都使用 HTTP/1.1,但速度很慢。 HTTP/1.1 无法并行发送文件,并且必须再次为每个请求发送标头/握手。您会遇到巨大的延迟问题 — 这就是浏览器使用多达六个连接来让一台主机一次加载六个文件的原因。使用 CDN,您可以增加主机,因此每个 CDN 会为您提供额外的六个连接。

但这实际上是历史。

HTTP/2 仅使用一个连接,并且能够保持流向上并多路复用包。它在协议层进行精灵/连接。

这意味着您可以并行发送许多文件(现在取决于您的带宽,在延迟阻止这种可能性之前)。您甚至可以对文件进行优先级排序并创建一个队列,以便最后发送不太重要的文件。

使用 HTTP/2,CDN 实际上会再次减慢您的网站速度,因为您必须再次发送多个标头/握手,从而导致延迟。

对于 HTTP/2,您需要一个 HTTPS 连接,但还是建议这样做。

【讨论】:

以上是关于为啥使用 CDN(内容交付网络)? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

使用CDN

如何让 ng-include 指令与内容交付网络一起使用?

什么是CDN?CDN在OCSP中的应用?

CDN内容分发网络的工作原理和解释

CDN网络加速适合那些场景使用?

新型缓存污染攻击针对受 CDN 保护的网站