内容分发网络(CDN)是一组在地理上广泛分布的服务器,它们一起工作以提供互联网内容的快速交付。通常静态文件,如 HTML/CSS/JS、照片和视频,都是由 CDN 提供的。
为什么使用 CDN?
内容分发网络(CDN)增加了内容的可用性和冗余度,同时降低了带宽成本并提高了安全性。通过 CDN 获取内容可以显著提高性能,因为用户从靠近他们的数据中心接收内容,我们的服务器也不必为 CDN 满足的请求提供服务。
CDN 是如何工作的?
在 CDN 中,源服务器包含内容的原始版本,边缘服务器分布在世界各地并且数量众多。
为了最大限度地减少访问者与服务器之间的距离,CDN 将其内容的缓存版本存储在多个地理位置,称为边缘位置。每个边缘位置包含一些缓存服务器,负责向其附近的访问者提供内容。
一旦静态资源被缓存在特定位置的所有 CDN 服务器上,之后所有网站访问者对静态资源的请求都将由这些边缘服务器提供(而不是源站),从而减少源站负载并提高可扩展性。
假如一名位于英国的用户请求本站,本站服务器当前托管在美国,他们将从最近的边缘位置(如伦敦)获得服务。这比让访问者向源站服务器发出完整的请求要快得多,后者会增加延迟。
类型
CDN 通常分为两种类型。
推模式(Push)
当服务器上内容发生更改时,使用了推模式的 CDN 会收到新内容。我们完全负责提供内容,直接上传至 CDN,并重写 URL 以指向 CDN。我们可以配置内容何时过期、何时更新。内容只有在新的或改变的时候才会被上传,最大程度地减少流量,最大限度地提高存储。
流量小的网站或内容不经常更新的网站使用推模式效果很好。内容被放置在 CDN 上一次,而不是定期被重新拉取。
拉模式(Pull)
在拉模式的情况下,缓存是根据请求更新的。当客户端发送一个要求从 CDN 获取静态资源的请求时,如果 CDN 中没有,那么它将从源站服务器获取新的资源,并用这个新资源填充其缓存,然后将这个新的缓存资源发送给用户。
与推模式 CDN 相反,拉模式需要较少的维护,因为 CDN 节点上的缓存更新是基于客户端对源站服务器的请求进行的。流量大的网站使用拉模式效果很好,因为流量分散地更均匀,只有最近请求的内容留在 CDN 上。
缺点
- 额外费用:使用 CDN 可能是昂贵的,特别是对于高流量的服务。
- 限制:一些组织和国家已经封锁了流行的 CDN 的域名或 IP 地址。
- 地点:如果我们的大部分受众位于没有部署 CDN 服务器的国家,他们访问我们网站上的数据,可能比不使用任何 CDN 的情况下延迟更高。
例子
以下是一些广泛使用的 CDN: