惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Cloudbric
Cloudbric
有赞技术团队
有赞技术团队
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
T
Threat Research - Cisco Blogs
L
LangChain Blog
Simon Willison's Weblog
Simon Willison's Weblog
Project Zero
Project Zero
Latest news
Latest news
S
Schneier on Security
Cisco Talos Blog
Cisco Talos Blog
MyScale Blog
MyScale Blog
C
Check Point Blog
IT之家
IT之家
P
Palo Alto Networks Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
CERT Recently Published Vulnerability Notes
Scott Helme
Scott Helme
The Hacker News
The Hacker News
C
CXSECURITY Database RSS Feed - CXSecurity.com
G
Google Developers Blog
T
Tor Project blog
T
Threatpost
D
DataBreaches.Net
博客园 - 【当耐特】
酷 壳 – CoolShell
酷 壳 – CoolShell
T
Troy Hunt's Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Vercel News
Vercel News
云风的 BLOG
云风的 BLOG
NISL@THU
NISL@THU
P
Privacy & Cybersecurity Law Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
C
Cisco Blogs
博客园_首页
S
Securelist
T
The Exploit Database - CXSecurity.com
Last Week in AI
Last Week in AI
量子位
U
Unit 42
Know Your Adversary
Know Your Adversary
Hugging Face - Blog
Hugging Face - Blog
S
Security Affairs
Google Online Security Blog
Google Online Security Blog
Hacker News: Ask HN
Hacker News: Ask HN
Webroot Blog
Webroot Blog
S
SegmentFault 最新的问题
Engineering at Meta
Engineering at Meta
N
News and Events Feed by Topic
P
Proofpoint News Feed
阮一峰的网络日志
阮一峰的网络日志

硅上观道・我的个人技术博客

函数式心法 (3):巧用柯里化和部分应用 函数式心法 (2):理解运用高阶函数 打造 NixOS 开发环境 (2):NixOS学习与配置入门指南 打造 NixOS 开发工作流 (1):为什么选择 NixOS Haskell 心法 (1):初识 - 为何学、学什么和怎么学 Clojure 笔记 (2):基本语法结构和 REPL 驱动编程 Clojure 笔记 (1):语言生态介绍和环境配置 前端笔记 (1):ES 标准和 ES6+ 变量定义方法 当我们发现毕生追求的知识在AI面前毫无价值时,如何重建存在的意义? 5 月 28 日 DeepSeek R1 模型完成小版本试升级并开源,具体有哪些提升? 信息闭塞和被信息洪流冲刷,哪个弊端更大?谈错误信息的危害性 Rust CLI 实战:手搓微型 grep (4) 交互式处理错误文件名问题 Rust CLI 实战:手搓微型 grep (3) 更优雅的错误处理 Rust CLI 实战:手搓微型 grep (2) 实现软件第一版 Rust CLI 实战:手搓微型 grep (1) 新建项目 学计算机有什么好的获取学习资料的方法?掌握高效的资料收集技巧 学习编程可以为自己带来什么?- 理论与实践的紧密结合 长文 - 大一技术成长复盘:课程、竞赛与开源之旅 推荐一个IDE中的AI工具 - CodeGeex插件和AI辅助编程 关于本站 - 一篇旧文章,我对本站内容更新计划的最初想法 读书笔记:读庄子《齐物论》,探寻真正的自我 读书笔记 - 单向度的人:核心思想,内容解析以及我的感悟 一篇时评写作练习:矛盾与救赎 - 关于行善
有哪些看起来很高端的技术其实原理很暴力很初级?浅析CDN内容分发网络原理
硅上观道 · 2025-05-14 · via 硅上观道・我的个人技术博客
随笔思考

内容分发网络,也即CDN(Content Delivery Network)。你可能会看到类似于网站访问全球加速、边缘计算等高大上词汇。可如果我说,这项技术其实就是把网站文件复制个几十几百份,放在全国/全球各地呢?

这篇文章是针对这个知乎问题的回答。


内容分发网络,也即CDN(Content Delivery Network)

如果你看过云服务商的介绍,对这个技术,可能会看到类似于网站访问全球加速、边缘计算等高大上词汇。

你可能会看到案例,告诉你 CDN 可以将原先访问速度在秒级、几百毫秒的网站,直接降低到几十毫秒,用户无感的程度。

还有些时候,你会看到宣传,说 CDN 帮助网站挡住了海量 DDoS 网络攻击,大幅降低网站运行成本。

图1:DDoS攻击

你觉得这样的技术高级不高级?

可如果我说,这项技术其实就是把网站文件复制个几十几百份,放在全国/全球各地呢?


内容分发网络的兴起,本质上是因为许多网站上的信息以静态资源为主。

所谓静态资源,主要指网站上的图片、视频,以及网页本身的 html、css、javascript 文件。

这些文件中的大部分,特别是图片视频这种类型的,在上传到网络上后基本不需要再做后续更改,所以被称为静态资源。

既然是静态资源,那为什么还一定要强求纽约的用户发送的网络请求飘洋过海到北京的服务器呢?我们直接把资源摆在用户家门口岂不是方便很多。

你看,这就是所谓内容分发网络的原理,本质上就是复制黏贴式的缓存

同样的静态资源在全球各地多复制几份,用户请求获取资源的时候,根据用户访问的 IP 地址,从最近的位置的缓存节点调配资源。这的确能起到加速网站加载速度的效果。

也就是说,你现在看到的这个问题下面图文并茂的回答,说不定获取网页、图片的网络请求根本没离开你所在的城市,这才让你在刷知乎的体验如此丝滑~

图2:CDN示意图


虽然说穿了 CDN 就是复制黏贴,但是如果我们真的深入进去来看其实这项技术往深了看还是可以很复杂的。

比如,在某些特定的场景下,你访问距离你最近的通信链路刚好就很拥挤,反倒是看起来离的更远的某个边缘节点访问速度更快。

面对这种情况,这就要求 CDN 厂商需要有更复杂的调度策略,对于实时网络质量有着通盘了解,调配正确的节点给正确的用户。

再比如,虽然说是静态资源,有些时候这些资源还是会发生改变的。

这时候 CDN 需要在上游资源发生变化的时候及时反映这种变化,确保用户能够看到正确的内容,这就对需要 CDN 厂商对资源缓存时间要有更精准的控制。

此外,随着现在技术水平的发展,边缘节点能做的事情不仅仅是加载静态资源,某些原先认为必须要由中央节点完成的后端逻辑,现在也可以下放到边缘完成。这其中代表服务包括 Cloudflare Workers, Lambda@Edge。

边缘计算的概念,随着时间的推移,正在逐渐超脱出原先简单的含义,变得愈加丰富精彩。

这么看来,这个简单粗暴的技术,其实真要说有些技术含量,多少还是有点道理的嘛。

图3:CDN全称


好,现在你知道 CDN 的原理了——它就像在每条街上克隆一家连锁超市。但千万别告诉你的老板,他每年花几百万买的“全球智能加速”,实际是多买几台复印机。

注:图片源自网络,如侵权请联系删除。