【计算机网络】CDN

可以把 CDN 理解成:把服务器里的静态资源提前放到离用户更近的地方,让用户就近访问。

举个例子:

你的网站服务器在北京,用户在广州。

如果没有 CDN:

text 复制代码
广州用户 → 北京服务器 → 返回图片/CSS/视频

距离远,网络链路长,所以访问慢。

如果有 CDN:

text 复制代码
广州用户 → 广州附近的 CDN 节点 → 返回图片/CSS/视频

用户不需要每次都跑到北京服务器拿资源,而是从附近 CDN 节点拿,所以更快。


CDN 主要解决什么问题?

解决的是:

用户离源服务器太远,访问资源慢的问题。

CDN 会把资源分发到各地的 边缘节点。

边缘节点可以理解成 CDN 公司部署在各个城市、地区的小型缓存服务器。


静态资源为什么适合 CDN?

静态资源一般变化少,比如:

text 复制代码
图片
视频
音频
CSS 文件
JS 文件
字体文件

这些文件发布之后通常不会频繁变化。

所以 CDN 可以放心缓存很久。

比如用户请求:

text 复制代码
https://example.com/logo.png

第一次请求时,CDN 节点没有这个图片,就会去源服务器拿:

text 复制代码
用户 → CDN 节点 → 源服务器

CDN 拿到后,会保存一份。

之后附近其他用户再访问这个图片:

text 复制代码
用户 → CDN 节点

CDN 直接返回缓存,不需要再访问源服务器。


动态资源为什么不适合长期缓存?

动态资源是经常变化的内容,比如:

text 复制代码
用户个人信息
订单信息
购物车数据
评论列表
登录状态

这些数据可能每个人看到的不一样,或者随时变化。

比如你访问:

text 复制代码
/user/profile

这个接口返回的是你的个人信息。

如果 CDN 把它长期缓存了,可能会出现严重问题:

text 复制代码
A 用户看到 B 用户的数据
或者用户看到旧数据

所以动态资源一般不长期缓存。

当然,动态资源不是完全不能用 CDN,只是缓存策略要更谨慎,比如:

text 复制代码
缓存几秒钟
不缓存
每次回源验证
按用户区分缓存

CDN 的完整流程简单说

第一次访问:

text 复制代码
用户请求资源
↓
DNS/CDN 调度系统判断用户位置
↓
分配一个离用户近的 CDN 节点
↓
CDN 节点发现自己没有缓存
↓
回源服务器获取资源
↓
CDN 节点缓存一份
↓
返回给用户

第二次附近用户访问同一个资源:

text 复制代码
用户请求资源
↓
CDN 分配附近节点
↓
节点发现有缓存
↓
直接返回资源

这就叫 命中缓存。


一句话总结

CDN 就是:

把图片、视频、CSS、JS 等静态资源缓存到离用户更近的服务器上,让用户就近获取,减少访问源服务器的次数,从而提高访问速度、降低服务器压力。

相关推荐
一条泥憨鱼11 小时前
【计算机网络】| 详解链路层:MAC 地址与VLAN
网络·学习·计算机网络
ESDWAN1 天前
跨境网络延迟、抖动和丢包有什么区别?如何判断业务影响
开发语言·网络·计算机网络·php
一条泥憨鱼3 天前
【计算机网络】| 从ping 不通出发:NAT 与 DHCP 在做什么
运维·服务器·网络·计算机网络
Java成神之路-3 天前
【计算机网络】ICMP协议超全详解
计算机网络
流浪0013 天前
计算机网络篇5:UDP 收发接口 recvfrom 与 sendto 的参数语义
计算机网络·udp·sendto·recvfrom
.Hypocritical.4 天前
计算机网络】吃透 OSI 七层模型与 TCP/IP 协议栈
网络协议·tcp/ip·计算机网络
一条泥憨鱼5 天前
【从0开始学习计算机网络】| ARP 协议:地址解析,ARP 欺骗,链路层寻址
网络·后端·学习·计算机网络
为思念酝酿的痛6 天前
数据链路层--帧传输与链路控制
网络·网络协议·计算机网络·数据链路层
程序员z76 天前
【从0开始学计算机网络】| HTTP 协议的进化史
网络协议·计算机网络·http
为思念酝酿的痛7 天前
NAT技术--网络地址转换原理
网络·计算机网络·智能路由器