【计算机网络】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 等静态资源缓存到离用户更近的服务器上,让用户就近获取,减少访问源服务器的次数,从而提高访问速度、降低服务器压力。

相关推荐
J-Tony114 小时前
【计算机网络】TCP粘包和拆包
网络·tcp/ip·计算机网络
酉鬼女又兒5 小时前
零基础入门计算机网络:物理层核心知识全解——传输方式分类、编码调制原理与信道极限容量计算
网络·计算机网络·考研·职场和发展·分类·数据挖掘·php
酉鬼女又兒5 小时前
零基础入门计算机网络物理层:核心概念、传输媒体、传输方式、编码调制与信道极限容量完整知识点总结
开发语言·网络·计算机网络·考研·职场和发展·php·信息与通信
四代水门6 小时前
计算机网络之——TCP/UDP协议
tcp/ip·计算机网络·udp
J-Tony118 小时前
【计算机网络】TCP的可靠性保证
网络·tcp/ip·计算机网络
落羽的落羽1 天前
【算法札记】练习 | Week5
linux·服务器·c++·人工智能·计算机网络·算法·哈希算法
路人蛃1 天前
【深入理解计算机系统】第二章第一节(信息存储)笔记
服务器·网络·笔记·计算机网络·系统架构
安静轨迹1 天前
计算机网络三大核心数据表:MAC 地址表、ARP 表、路由表(深度通俗完整版)
网络·计算机网络·macos
19岁开始学习1 天前
计算机网络
网络·计算机网络