为什么推荐将静态资源放到 CDN 上

了解 CDN 的工作原理和使用静态资源 CDN 的优势

问题

为什么推荐将静态资源放到 CDN 上?

解答

静态资源与动态资源

静态资源是指在不同请求中访问到的数据都相同的文件,例如图片、视频、CSS、JavaScript、字体文件、安装包等。

动态资源是指在不同请求中访问到的数据不相同的内容,例如 API 接口返回的数据、数据库查询结果、服务端渲染的页面等。

CDN 是什么

CDN(Content Delivery Network,内容分发网络)是由分布在不同区域的边缘节点服务器群组成的分布式网络。

CDN 加速的本质是缓存加速。它将服务器上的静态内容缓存在 CDN 节点上,当用户访问这些静态内容时,无需访问源站服务器,就近访问 CDN 节点即可获取相同内容,从而达到加速效果,同时减轻源站压力。

需要注意的是,CDN 的缓存加速不适用于动态内容。因为动态内容每次都需要服务器实时生成,CDN 节点只能转发请求回源站,无法提供加速效果。

CDN 的优势

1. 加速网站访问

CDN 覆盖全球线路,通过与运营商合作,在全国骨干节点部署边缘存储节点,解决跨运营商、跨地域访问延迟问题,让用户就近获取内容。

2. 提升网站安全性

CDN 的负载均衡和分布式存储技术可以加强网站可靠性,防御大部分互联网攻击事件,为网站提供安全保障。

3. 异地容灾备援

当某个服务器发生故障时,系统会自动调用其他临近的健康节点提供服务,实现接近 100% 的可用性。

4. 节约成本

使用 CDN 无需购买多地服务器、处理服务器镜像同步、维护技术团队,大幅降低人力和运维成本。

5. 专注核心业务

CDN 厂商通常提供 7x24 运维监控支持,让开发团队可以将更多精力投入到核心业务开发上。

CDN 工作原理

当用户访问使用了 CDN 的网站时,完整流程如下:

  1. 用户在浏览器输入网站域名
  2. 本地 DNS 将域名解析权交给 CDN 专用 DNS 服务器
  3. CDN DNS 服务器返回全局负载均衡设备的 IP 地址
  4. 用户向全局负载均衡设备发起请求
  5. 全局负载均衡设备根据用户 IP 和请求内容,选择合适的区域负载均衡设备
  6. 区域负载均衡设备综合考虑以下因素选择最佳缓存服务器:
    • 距离用户最近的服务器
    • 拥有所需内容的服务器
    • 当前负载较低的服务器
  7. 返回缓存服务器 IP 地址给用户
  8. 用户向缓存服务器请求内容,如果该服务器没有缓存,则向上级服务器或源站获取内容

没有 CDN 时的访问流程

传统的 B/S 架构网站访问流程:

  1. 用户在浏览器输入域名
  2. 浏览器向本地 DNS 服务器请求域名解析
  3. 本地 DNS 返回缓存结果,或递归查询整个 DNS 系统获取解析结果
  4. 浏览器获得服务器 IP 地址
  5. 浏览器直接向源站服务器请求内容
  6. 服务器返回内容给浏览器

这种方式下,所有用户都直接访问源站,导致源站压力大、跨地域访问慢、容易出现单点故障。

关键点

  • CDN 通过缓存静态资源到边缘节点,让用户就近访问,减少延迟和源站压力
  • CDN 只适用于静态资源加速,动态内容仍需回源获取
  • CDN 通过全局和区域负载均衡,智能选择最优节点为用户提供服务
  • 使用 CDN 可以提升访问速度、增强安全性、降低成本、实现异地容灾
  • CDN 的核心是将内容分发到离用户更近的节点,本质是用空间换时间