CDN 详解
星云XYGALAXY 10/29/2023 CDN
# 1、访问服务器流程
在了解CDN之前,先了解下访问服务器的流程。我们部署了一个项目在服务器,客户端发送请求,服务器收到请求,根据请求的资源,去服务器上找资源,找到了返回给客户端。这个过程,客户端和服务器之间,需要建立连接,然后传输数据,这个过程就是一次完整的访问服务器数据流程。
服务器的限制
- 服务器其实就是一台电脑,一台电脑的带宽是有限的,如果同时有大量的用户访问,服务器带宽不够,就会造成用户访问速度慢。
- 服务器的性能是有限的,CPU和内存都是有上限的,如果大量的请求同时访问,服务器性能不够,就会造成服务器宕机。
- 服务数量可以增加,但是成本也是增加的。如果已经增加了一定上限的服务器,但是用户的访问量依然很大,分配给每台服务器的压力也是很大的。
- 网络传输是需要时间的,北京的用户访问欧美的服务器,即使是光纤的速度,发送请求到服务器再返回客户端就需要两倍的时间。
再多再好的服务器,如果访问量过大,服务器也会有瓶颈,到达瓶颈用户访问就会很慢,或者服务器宕机,用户访问就会失败。那这个时候我们就想能不能让用户反复访问的资源,不用每次都去源服务器上找资源,而是让用户访问的资源,都存放在其他一些服务器上,用户访问的时候,直接访问这些服务器上的资源,这样就能缓解源服务器的压力。源服务器只需要处理一些动态的数据请求就行,比如登录,注册,订单,支付等等。而静态资源就可以交给特定的服务器,而这些特定的服务器就是我们所说的CDN。
# 2、CDN 是什么
根据访问服务器流程,我们大概知道CDN是什么了,下面就详细介绍下CDN。
- CDN 全称Content Delivery Network,即内容分发网络。
- CDN 是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。
- CDN 允许快速传输加载互联网内容所需的资源,包括 HTML 页面、javascript 文件、样式表、图像和视频。
CDN结构图
# 3、CDN 的特定和好处
- 提高访问速度,用户只需要访问就近的 CDN 节点,速度会快很多。
- 降低源站压力,CDN 节点上缓存了源站数据,用户访问时,直接访问 CDN 节点。
- 保障源站安全,用户访问 CDN 节点,节点上数据是加密的,源站数据是安全的。
- 跨运营商,用户访问的节点,可能跨运营商。
- 支持回源,当用户访问的资源不存在时,会回源站获取数据。
- 改善网站安全性,CDN 可以通过提供 DDoS 缓解、安全证书的改进以及其他优化措施来提高安全性。
- CDN 可以隐藏源服务器的IP地址,对服务器实现保护。
- CDN 可以使用最小化和文件压缩之类的策略来减小文件大小,从而减少传输的数据量。较小的文件意味着更快的加载时间。
- CDN 还可以通过优化连接重用和启用 TLS 假启动来加速使用 TLS/SSL 的站点。
# 4、CDN 的应用
已经知道的CDN的基本原理和好处,那么如何使用CDN呢?CDN的使用有两个方向可以选择:
加速项目
- 各大云服务厂商都会提供CDN服务,比如阿里云,腾讯云,华为云,百度云,360云等。
- 在服务器所在厂商,购买CDN加速包,需要配置域名,然后配置CDN节点,CDN节点就是CDN服务器,然后等待CDN加速包生效。
- 生效之后访问,服务器的真实IP会隐藏,如果配置了缓存,那么访问的资源就会更快。也可以通过网络请求头查看是否CDN生效。
外部CDN资源使用
比如我们前端用了JQuery包,本来我们是放在项目中的JQuery包,这个时候我们就可以使用CDN资源,直接使用CDN的JQuery包。