Ctrl+D 收藏本站 再次访问不迷路 ~
你的服务器在北京,用户在上海,页面内容要跑 2000 公里才能到用户那里。CDN 干的事,就是把内容搬到离用户最近的「仓库」里。
不用 CDN 的时候
每次访问都要:
- DNS 解析 → 找到服务器 IP(北京)
- TCP 握手(1 个 RTT)
- TLS 握手(1-2 个 RTT)
- HTTP 请求和响应
如果服务器在海外,延迟可能到 200ms+。页面 3 秒都打不开。
CDN 把你的静态资源(图片、CSS、JS、字体)缓存到遍布全球的边缘节点。用户访问时,就近取资源。
| 场景 | 无 CDN | 有 CDN |
|---|---|---|
| 北京服务器 + 上海用户 | 50-80ms | 5-10ms |
| 美国服务器 + 中国用户 | 200-300ms | 30-60ms |
| 全球用户访问同一个站 | 延迟差异大 | 各地都快 |
CDN 的核心原理
1. DNS 解析到最近节点
用户访问 xuyunblog.com
│
▼
CDN 的 DNS(智能解析)
│
├─ 北京用户 → 解析到 1.2.3.4(北京 CDN 节点)
├─ 上海用户 → 解析到 5.6.7.8(上海 CDN 节点)
└─ 广州用户 → 解析到 9.10.11.12(广州 CDN 节点)2. 缓存策略
| 缓存状态 | 说明 |
|---|---|
| Cache HIT(命中) | 内容在边缘节点有缓存,直接返回 |
| Cache MISS(未命中) | 节点没有,回源服务器获取 |
| Cache BYPASS(绕过) | 不缓存,每次回源 |
| Cache STALE(过期) | 缓存过期,先返回旧内容同时回源更新 |
3. 回源优化
CDN 回源时会复用连接、优化路由,所以即使 MISS,也比用户直接访问源站快。
什么内容适合用 CDN 缓存
| 内容类型 | 是否缓存 | 缓存时间建议 |
|---|---|---|
| 图片(jpg/webp/png) | ✅ 缓存 | 7-30 天 |
| CSS / JS 文件 | ✅ 缓存 | 7-30 天 |
| 字体文件(woff2) | ✅ 缓存 | 30-90 天 |
| HTML 页面 | ⚠️ 谨慎 | 5-30 分钟(动态内容少缓存) |
| API 响应 | ❌ 不缓存(或很短) | 0-60 秒 |
| 用户上传内容 | ✅ 缓存 | 1-7 天 |
| 后台管理页面 | ❌ 不缓存 | 0 |
2026年主流CDN对比
面向全球用户
| CDN | 节点数 | 免费额度 | 价格(1TB) | 适合场景 |
|---|---|---|---|---|
| Cloudflare | 300+城市 | 免费(无限流量) | $0/免费 | 个人站、小站 |
| Cloudflare Pro | 同上 + WAF | $20/月 | 含流量 | 中型站 |
| Bunny CDN | 100+节点 | 无 | $1/10GB | 流量大、便宜 |
| Fastly | 70+城市 | 无 | $45/月起 | 企业级、边缘计算 |
| AWS CloudFront | 600+节点 | 1TB/年免费 | $85/TB | AWS 生态 |
面向国内用户
| CDN | 节点数 | 备案要求 | 价格(100GB) | 特色 |
|---|---|---|---|---|
| 阿里云CDN | 2800+ | 必须备案 | ¥14.5 | 生态集成好 |
| 腾讯云CDN | 2800+ | 必须备案 | ¥15 | 与腾讯云融合 |
| 华为云CDN | 2700+ | 必须备案 | ¥14 | 政企合规 |
| 白山云CDN | 1500+ | 必须备案 | 按需报价 | 边缘计算强 |
| 七牛云CDN | 500+ | 必须备案 | 免费10GB/月 | 小站福音 |
注意:国内 CDN 使用国内节点必须备案。不备案只能用海外 CDN 节点。
Cloudflare 免费版详解
对于个人站来说,Cloudflare 免费版已经足够好。看看它能干什么:
| 功能 | 免费版 | Pro $20/月 | Business $200/月 |
|---|---|---|---|
| CDN 缓存 | ✅ | ✅ | ✅ |
| SSL 证书 | ✅ | ✅ | ✅ |
| DDoS 防护 | 基础 | 增强 | 高级 |
| Web 应用防火墙(WAF) | ❌ | ✅ | ✅ |
| 图片优化(Polish) | ❌ | ✅ | ✅ |
| 页面规则 | 3 条 | 20 条 | 50 条 |
| 速度优化 | 基础 | 完整 | 完整 |
| 分析数据 | 基础 | 详细 | 高级 |
| 支持响应 | 社区 | 邮件 | 电话+邮件 |
接入 Cloudflare 步骤
- 注册 Cloudflare 账号
- 添加你的域名
- 修改域名的 DNS 服务器为 Cloudflare 提供的
- 等 DNS 生效(几分钟到 48 小时)
- 配置缓存规则、SSL 模式
接入完成后,把域名 DNS 解析托管给 Cloudflare(Proxied 模式),流量就自动走 CDN 了。
CDN 和其他优化的关系
CDN 不是万能的,它主要加速静态内容。完整的网站速度优化链条:
优化层级:
┌─────────────────────────────────┐
│ 1. 代码层面优化 │ ← 压缩、合并、Tree-shaking
├─────────────────────────────────┤
│ 2. 服务端缓存(OPcache / Redis) │ ← 减少动态计算
├─────────────────────────────────┤
│ 3. 页面缓存(Nginx cache / WP缓存) │ ← 直接返回 HTML
├─────────────────────────────────┤
│ 4. CDN 加速 │ ← 就近分发静态资源
├─────────────────────────────────┤
│ 5. 数据库优化(索引 / 慢查询) │ ← 减少数据库压力
├─────────────────────────────────┘CDN 是第四层,它加速的是前面几层处理完之后传出去的内容。如果服务端本身就慢,CDN 能帮的有限。
CDN 的隐性成本
用 CDN 之前也要看看潜在代价:
| 成本项 | 说明 |
|---|---|
| 实时性 | 内容更新后,用户可能看到缓存的旧版本 |
| 配置复杂度 | 缓存策略需要调试,有时候会出奇怪的问题 |
| 日志分散 | 访问日志在 CDN 节点而不是源站 |
| 依赖风险 | CDN 挂了网站可能受影响(做好回源降级) |
| Cookie 传递 | CDN 可能缓存带 Cookie 的响应,导致用户看到别人的登录态 |
常见问题
CDN 会不会影响 SEO?
正确使用 CDN 有利于 SEO——加载速度是排名因素之一。但要注意:确保搜索引擎爬虫能正常访问(不要在 robots.txt 里屏蔽 CDN 相关资源)。
CDN 和对象存储有什么区别?
对象存储(如 OSS、COS)是存文件的,CDN 是分发内容的。两者经常配合使用:文件存在对象存储,通过 CDN 分发给用户。
怎么判断 CDN 有没有生效?
看响应头里的 cf-cache-status(Cloudflare)或 X-Cache(其他 CDN)。如果显示 HIT 就是缓存命中了。
叙云博客系列教程持续更新,下一篇我们聊聊数据库优化。
©版权声明
文章版权归作者所有,未经允许请勿转载。
THE END

暂无评论内容