【计算机网络】CDN
CDN 就是:把图片、视频、CSS、JS 等静态资源缓存到离用户更近的服务器上,让用户就近获取,减少访问源服务器的次数,从而提高访问速度、降低服务器压力。
可以把 CDN 理解成:把服务器里的静态资源提前放到离用户更近的地方,让用户就近访问。
举个例子:
你的网站服务器在北京,用户在广州。
如果没有 CDN:
广州用户 → 北京服务器 → 返回图片/CSS/视频
距离远,网络链路长,所以访问慢。
如果有 CDN:
广州用户 → 广州附近的 CDN 节点 → 返回图片/CSS/视频
用户不需要每次都跑到北京服务器拿资源,而是从附近 CDN 节点拿,所以更快。
CDN 主要解决什么问题?
解决的是:
用户离源服务器太远,访问资源慢的问题。
CDN 会把资源分发到各地的 边缘节点。
边缘节点可以理解成 CDN 公司部署在各个城市、地区的小型缓存服务器。
静态资源为什么适合 CDN?
静态资源一般变化少,比如:
图片
视频
音频
CSS 文件
JS 文件
字体文件
这些文件发布之后通常不会频繁变化。
所以 CDN 可以放心缓存很久。
比如用户请求:
https://example.com/logo.png
第一次请求时,CDN 节点没有这个图片,就会去源服务器拿:
用户 → CDN 节点 → 源服务器
CDN 拿到后,会保存一份。
之后附近其他用户再访问这个图片:
用户 → CDN 节点
CDN 直接返回缓存,不需要再访问源服务器。
动态资源为什么不适合长期缓存?
动态资源是经常变化的内容,比如:
用户个人信息
订单信息
购物车数据
评论列表
登录状态
这些数据可能每个人看到的不一样,或者随时变化。
比如你访问:
/user/profile
这个接口返回的是你的个人信息。
如果 CDN 把它长期缓存了,可能会出现严重问题:
A 用户看到 B 用户的数据
或者用户看到旧数据
所以动态资源一般不长期缓存。
当然,动态资源不是完全不能用 CDN,只是缓存策略要更谨慎,比如:
缓存几秒钟
不缓存
每次回源验证
按用户区分缓存
CDN 的完整流程简单说
第一次访问:
用户请求资源
↓
DNS/CDN 调度系统判断用户位置
↓
分配一个离用户近的 CDN 节点
↓
CDN 节点发现自己没有缓存
↓
回源服务器获取资源
↓
CDN 节点缓存一份
↓
返回给用户
第二次附近用户访问同一个资源:
用户请求资源
↓
CDN 分配附近节点
↓
节点发现有缓存
↓
直接返回资源
这就叫 命中缓存。
一句话总结
CDN 就是:
把图片、视频、CSS、JS 等静态资源缓存到离用户更近的服务器上,让用户就近获取,减少访问源服务器的次数,从而提高访问速度、降低服务器压力。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)