使用 CDN 加快静态内容的传输速度

介绍

现代网站和应用程序往往必须向最终用户提供大量的静态内容. 此内容包括图像,风格表,JavaScript和视频. 随着这些静态资产的数量和规模的增加,带宽的使用量膨胀,页面加载时间增加,从而降低了用户的浏览体验,并减少了服务器的可用容量。

要大幅减少页面加载时间,提高性能,并降低带宽和基础设施成本,您可以部署一个 CDN 或 content delivery nnetwork,以在一组地理分布的服务器上缓存这些资产。

在本教程中,我们将提供高级别的CDN的概述,以及它们如何工作,以及它们可以为您的Web应用提供的益处。

CDN是什么?

内容交付网络是一个地理分布的服务器组,优化为向最终用户提供静态内容,这种静态内容可以是几乎任何类型的数据,但CDN最常用来交付网页及其相关文件,流视频和音频,以及大型软件包。

Diagram of content delivery without a CDN

CDN 由多個位置的 points of presence (PoPs) 組成,每個都由多個 edge 伺服器組成,從您的 origin 或主機伺服器中存儲資產。當使用者訪問您的網站並要求像圖像或 JavaScript 檔案這樣的靜態資產時,他們的要求會由 CDN 路由到最接近的邊緣伺服器,從那裡提供內容。如果邊緣伺服器沒有儲存資產或已過期儲存資產,CDN 會從附近的其他 CDN 邊緣伺服器或您的原始伺服器中收集並儲存最新版本。如果 CDN edge 對您的資產有儲存儲存記 (如果您的網站接收適度量的流量,大多數時候會發生這種

Content Delivery Network (CDN) diagram

这允许地理分布的用户最大限度地减少接收静态内容所需的跳跃次数,直接从附近边缘的缓存中获取内容,从而显著减少延迟和包丢失,加快页面加载时间,并大幅减少原始基础设施的负载。

CDN 提供商通常提供附加功能,如 DDoS减轻和率限制,用户分析,以及为流媒体或移动使用案例的优化。

CDN是如何工作的?

当用户访问您的网站时,他们首先会收到来自 DNS 服务器的响应,其中包含主机 Web 服务器的 IP 地址,然后他们的浏览器会请求 Web 页面的内容,其中通常包括各种静态文件,如 HTML 页面, CSS 样式表,JavaScript 代码和图像。

一旦您部署 CDN 并将这些静态资产卸载到 CDN 服务器上,要么通过手动它们,要么让 CDN 自动这些资产(下一节所涵盖的两种机制),您就会指示您的 Web 服务器重新写到静态内容的链接,以便这些链接现在指向由 CDN 托管的文件。

许多 CDN 提供定制域的支持,允许您在您的域中创建一个 CNAME 记录,指向 CDN 终端。一旦 CDN 在该终端(位于边缘,比您的后端服务器更接近用户)接收用户请求,它将请求路由到用户最接近的存在点(PoP)。

CDN 提供商的缓存机制不同,但一般情况下,它们如下:

  1. 当 CDN 收到一个静态资产的第一个请求时,例如 PNG 图像,它没有资产缓存,必须从附近的 CDN 边缘服务器或原始服务器本身获取该资产的副本。这被称为缓存错过,通常可以通过检查 HTTP 响应标题,其中包含X-Cache:MISS。这个初始请求将比未来请求更慢,因为完成此请求后,该资产将被缓存在边缘 2。对该资产的未来请求(缓存打击),路由到这个边缘位置,现在将从缓存中提供服务,直到到期(通常通过 HTTP 头设置)。

要了解有关特定 CDN 如何运作和实施的更多信息,请参阅您的 CDN 提供商的文档。

在下一节中,我们将介绍两种流行的CDN类型: pushpull CDN。

推 vs. 推区

大多数CDN提供商提供两种缓存数据的方式:拉取区域和推送区域。

提取区域涉及输入原始服务器的地址,并允许CDN自动提取和缓存您的网站上可用的所有静态资源。提取区域通常用于提供频繁更新,小到中等规模的Web资产,如HTML,CSS和JavaScript文件。在向CDN提供原始服务器的地址后,下一步通常是重写对静态资产的链接,以便它们现在指向CDN提供的URL。

若要使用 Push Zone,您将数据上传到指定的库存或存储位置,然后CDN将其推到其分布式边缘服务器库存中。

使用CDN的好处

几乎任何网站都可以从部署CDN中获益,但一般来说,实现CDN的主要原因是将带宽从原始服务器下载到CDN服务器,并减少地理分布的用户的延迟。

我们将通过下面使用CDN提供的这些和其他几个主要优势。

起源 离线

如果你正在接近你的服务器的带宽容量,下载像图像,视频,CSS和JavaScript文件等静态资产将大大减少你的服务器的带宽使用量。内容交付网络被设计和优化为提供静态内容,而此类内容的客户端请求将被边缘CDN服务器路由并提供。

降低延迟,改善用户体验

如果您的用户库在地理上分散,而您的流量来自一个偏远的地理区域,CDN 可以通过将边缘服务器上的静态资产缓存来减少延迟,从而更接近您的用户。

这些好处适用于主要提供带宽密集的视频内容的网站,高延迟和慢加载时间更直接影响用户体验和内容参与。

管理交通峰值并避免停机时间

CDN 允许您通过在边缘服务器的大型分布式网络中处理负载平衡请求来处理大型流量峰值和爆炸,通过在交付网络上卸载和缓存静态内容,您可以通过现有基础设施容纳更多的同时用户。

对于使用单一原始服务器的网站,这些大型流量高峰通常会压倒系统,导致未计划的中断和停机时间。

降低成本

由于提供静态内容通常占您带宽使用量的大部分,将这些资产卸载到内容交付网络可以大大降低您的每月基础设施支出。除了降低带宽成本外,CDN还可以通过减少原始服务器的负载来降低服务器成本,从而使您的现有基础设施扩展。

提高安全性

CDN 的另一个常见用例是 DDoS 攻击缓解。许多 CDN 提供商包括监控和过滤到边缘服务器的请求的功能。这些服务分析网络流量以寻找可疑模式,阻止恶意攻击流量,同时继续允许可信的用户流量通过。

此外,大多数CDN允许您配置完整的SSL,以便您可以加密CDN和最终用户之间的流量,以及CDN和原始服务器之间的流量,使用CDN提供的或自定义SSL证书。

选择最佳解决方案

如果您的瓶颈是原始服务器上的CPU负载,而不是带宽,则CDN可能不是最合适的解决方案。

在推出 CDN 之前,额外的优化步骤 - 例如缩小和压缩 JavaScript 和 CSS 文件,并允许 Web 服务器 HTTP 请求压缩 - 也可能对页面加载时间和带宽使用产生重大影响。

一个有用的工具来衡量页面加载速度并改善它是谷歌的 PageSpeed Insights

结论

内容交付网络可以成为提高网站可扩展性和可用性的快速有效解决方案. 通过在优化服务器的地理分布式网络中缓存静态资产,您可以大大减少最终用户的页面加载时间和延迟。

借助 WordPress、Drupal、Django 和 Ruby on Rails 等主要框架的插件和第三方支持,以及 DDoS 缓解、完整 SSL、用户监控和资产压缩等额外功能,CDN 可以成为保护和优化高流量网站的有影响力的工具。

Published At
Categories with 技术
comments powered by Disqus