静态资源 CDN 部署

了解 CDN 的工作原理和为什么要将静态资源部署到 CDN

问题

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

解答

什么是静态资源

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

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

什么是 CDN

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

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

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

CDN 的优势

1. 加速访问

CDN 覆盖全球线路,通过与运营商合作,在全国骨干节点部署边缘存储节点,解决跨运营商、跨地域访问慢的问题。

2. 提升安全性

CDN 的负载均衡和分布式存储技术可以增强网站可靠性,防御大部分互联网攻击,如 DDoS 攻击。

3. 高可用性

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

4. 节约成本

无需购买多地服务器和托管运维,无需配置服务器镜像同步,节省人力和财力成本。

5. 专注业务

CDN 厂商提供一站式服务和 7x24 运维监控,让开发者可以专注于核心业务开发。

CDN 工作原理

使用 CDN 时的访问流程:

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

不使用 CDN 时的访问流程:

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

这种方式下,所有用户都直接访问源站,距离远的用户访问慢,源站压力大。

关键点

  • CDN 通过缓存静态资源到边缘节点,实现就近访问,加速内容分发
  • CDN 只适用于静态资源,动态内容仍需回源到服务器
  • CDN 通过全局和区域负载均衡,智能选择最优节点服务用户
  • 使用 CDN 可以提升访问速度、增强安全性、降低源站压力、节约成本
  • CDN 的 DNS 解析会将用户请求导向最近的边缘节点,而不是源站