太长不看(TL;DR): CDN 对全球 SaaS 性能至关重要,它会在靠近用户的边缘节点缓存静态资产与动态内容。本指南对比了主流 CDN 供应商,涵盖了缓存配置、清理策略以及自定义源站设置。
简介
内容分发网络(CDN)会在全球边缘服务器上缓存您的内容,无论用户身在何处都能有效降低延迟。对于 SaaS 应用而言,CDN 是性能优化的第一道防线。
CDN 供应商对比
| 功能 | Cloudflare | Fastly | CloudFront | Bunny.net |
|---|---|---|---|---|
| 边缘节点数 | 330+ | 150+ | 600+ | 100+ |
| 定价模型 | Free/Pro/Business | 按量计费 + 最低消费 | 按量计费 | 每 TB 统一定价 |
| 自定义 VCL | 不支持 (Workers) | 支持 (VCL) | 支持 (Lambda@Edge) | 不支持 |
| 缓存 API | Workers Cache API | PURGE API | Invalidation | PURGE API |
| DDoS 防护 | 内置 | 附加组件 | AWS Shield | 附加组件 |
| 设置复杂度 | 简单 | 中等 | 中等 | 简单 |
Cloudflare 缓存配置
Cloudflare 的缓存规则可通过 wrangler.jsonc 或 Cloudflare 仪表盘进行配置。以下配置为静态资产设置了 24 小时的 TTL 以及 stale-while-revalidate 策略,以实现即时缓存刷新:
# wrangler.jsonc
{
"rules": [
{
"description": "Cache static assets",
"expression": "(http.request.uri.path ~ '\\.(css|js|png|jpg|svg|woff2)$')",
"actions": {
"cache": {
"ttl": 86400,
"serve_stale": {
"status": [200],
"stale_while_revalidate": 3600
}
}
}
}
]
}
包含 stale_while_revalidate 的 serve_stale 配置确保了用户永远不会遇到缓存未命中(cache miss)——边缘节点会在后台拉取最新版本的同时,继续为用户提供旧页面。这对于长期缓存的资产而言非常关键。
按内容类型划分的缓存策略
| 内容类型 | TTL | 缓存层级 | 缓存键 |
|---|---|---|---|
| 静态资产(CSS/JS) | 1 年 | 边缘节点 + 浏览器 | 完整 URL |
| 图片 | 30 天 | 边缘节点 + 浏览器 | URL + 尺寸 |
| API 响应 | 0-60s | 仅边缘节点 | URL + 请求头 |
| HTML 页面 | 0-300s | 仅边缘节点 | URL + Cookie |
结论
对于大多数 SaaS 应用而言,Cloudflare 提供了边缘覆盖、性能特性与简单性的上佳组合。您可以从默认缓存入手,而后根据内容新鲜度的要求调整 TTL。欲了解更多缓存优化技巧,请参阅我们的边缘缓存策略指南;若想了解如何降低首字节时间(TTFB),请查阅性能优化:降低首字节时间指南。HTTP/2 与 HTTP/3 优化一文详细介绍了协议层面的性能改进,而核心 Web 指标优化指南则将 CDN 策略和用户体验衡量标准结合在了一起。