Performance 性能优化:CDN 选择与配置指南

为您的 SaaS 应用选择并配置最合适的 CDN,全面对比 Cloudflare、Fastly、AWS CloudFront 和 Bunny.net,详细解析边缘缓存策略、全球内容分发机制、缓存清理 API 以及自定义源站配置,帮助开发团队全面优化静态与动态内容,显著降低全球用户的访问延迟,整体提升网络性能指标。

Alex Chen
Alex Chen
June 1, 202611 min read
其他语言:Deutsch · English

太长不看(TL;DR): CDN 对全球 SaaS 性能至关重要,它会在靠近用户的边缘节点缓存静态资产与动态内容。本指南对比了主流 CDN 供应商,涵盖了缓存配置、清理策略以及自定义源站设置。

简介

内容分发网络(CDN)会在全球边缘服务器上缓存您的内容,无论用户身在何处都能有效降低延迟。对于 SaaS 应用而言,CDN 是性能优化的第一道防线。

CDN 供应商对比

功能CloudflareFastlyCloudFrontBunny.net
边缘节点数330+150+600+100+
定价模型Free/Pro/Business按量计费 + 最低消费按量计费每 TB 统一定价
自定义 VCL不支持 (Workers)支持 (VCL)支持 (Lambda@Edge)不支持
缓存 APIWorkers Cache APIPURGE APIInvalidationPURGE API
DDoS 防护内置附加组件AWS Shield附加组件
设置复杂度简单中等中等简单

Cloudflare 缓存配置

Cloudflare 的缓存规则可通过 wrangler.jsonc 或 Cloudflare 仪表盘进行配置。以下配置为静态资产设置了 24 小时的 TTL 以及 stale-while-revalidate 策略,以实现即时缓存刷新:

toml
# 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 策略和用户体验衡量标准结合在了一起。