为什么推荐将静态资源放到 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. 节约成本
无需购买多地服务器和托管运维,无需配置服务器镜像同步,节省人力和财力成本。
5. 专注业务
CDN 厂商提供 7x24 运维监控支持,让开发者可以将更多精力投入到核心业务开发上。
CDN 工作原理
当用户访问使用了 CDN 的网站时,完整流程如下:
- 用户在浏览器输入网站域名
- 本地 DNS 将域名解析权交给 CDN 专用 DNS 服务器
- CDN DNS 返回全局负载均衡设备的 IP 地址
- 用户向全局负载均衡设备发起请求
- 全局负载均衡设备根据用户 IP 和请求内容,选择最合适的区域负载均衡设备
- 区域负载均衡设备综合考虑以下因素选择缓存服务器:
- 距离用户最近的服务器
- 拥有所需内容的服务器
- 负载较低的服务器
- 返回最优缓存服务器的 IP 地址给用户
- 用户向缓存服务器请求内容
- 缓存服务器响应请求,如果没有缓存则向上级或源站拉取内容
没有 CDN 时的访问流程
传统的 B/S 架构访问流程:
- 用户在浏览器输入域名
- 浏览器向本地 DNS 请求解析
- 本地 DNS 返回缓存结果,或递归查询整个 DNS 系统
- 浏览器获得服务器 IP 地址
- 浏览器直接向源服务器请求内容
- 服务器返回内容给浏览器
这种方式下,所有用户都直接访问源站,距离远的用户访问慢,源站压力大。
关键点
- CDN 通过缓存静态资源到边缘节点,实现就近访问,加速内容分发
- CDN 只适用于静态资源,动态内容仍需回源到服务器
- CDN 提供负载均衡和分布式存储,提高网站可用性和安全性
- 使用 CDN 可以节省服务器成本,减轻源站压力
- CDN 通过智能 DNS 解析和负载均衡,将用户请求分配到最优节点
目录