网站 CDN 配置完全指南:从入门到高级优化

CDN(内容分发网络)是现代网站不可或缺的基础设施。它把静态资源缓存到遍布全球的边缘节点,让用户从距离自己最近的位置取数据,同时把你的域名接到 DDoS 防护、SSL 证书和安全规则这些增值能力前面。

一个请求经过 CDN 会发生什么

以某张封面图为例:用户第一次访问 https://example.com/images/cover.webp 时,边缘节点发现本地没有这份文件(cache miss),于是回源到你的服务器拉取,存入本地后把响应返回给用户;同一城市第二个用户再访问时直接命中缓存(cache hit),整个过程不再碰到你的源站。静态资源命中率做到 90% 以上时,源站压力大幅下降,即使源站短暂抖动,CDN 也能继续把缓存内容发给用户。

这里有两个值得长期盯着的数字:缓存命中率回源率。命中率越高,回源越少,带宽和源站负载就越低;控制这两个数字靠的正是缓存策略。

主流 CDN 服务商比较

服务商 免费方案 特点 最佳场景
Cloudflare 安全+加速一体化,免费计划强大 中小型网站
Bunny CDN 性价比极高,按量计费 预算有限的项目
AWS CloudFront 深度集成 AWS 生态 AWS 用户
Fastly 高性能边缘计算 高流量网站
Azure CDN 集成 Azure 服务 微软用户

免费方案里 Cloudflare 功能最全,但走的是共享节点、回源流量不计费;Bunny CDN 没有免费档,胜在便宜和接口简单;如果你的服务本来就跑在 AWS 上,CloudFront 能省掉跨云回源的费用。选哪家没有绝对答案,建议按 CDN 服务商对比里的方法,用两周真实流量试跑再定。

快速部署指南(以 Cloudflare 为例)

  1. 在 Cloudflare 注册账号,点击「Add a Site」输入域名,它会自动扫描现有的 DNS 记录。
  2. 把域名注册商处的 NameServer 改成 Cloudflare 提供的两个地址,然后用 dig example.com ns +short 确认 NS 已生效,一般 24 小时内完成。
  3. 设置 SSL 模式:Flexible 只加密客户端到边缘这一段;Full 要求源站有证书(自签也行);Full Strict 还要求证书可验证。只要源站支持,直接选 Full Strict。
  4. 配置缓存规则(见下一节),再回头确认解析已指向 Cloudflare。

高级缓存策略

缓存时间(TTL)不是越长越好,而是看资源类型:

文件类型 缓存时间 说明
图片(jpg/png/webp) 30-365 天 配合版本化文件名
CSS/JS 7-30 天 文件名带内容哈希
HTML 0-1 小时 可能更新频繁
字体 365 天 基本不变
API 响应 0-5 分钟 动态内容

给文件名加哈希,是实现"长 TTL 又不变更滞后"的关键。打包工具把 app.css 输出成 app-8f3a2c.css,内容一变文件名就变,旧缓存自然失效,TTL 放心设 30 天。

在源站配 Cache-Control 响应头,比在 CDN 面板里逐条写规则更干净,因为回源时 CDN 会尊重源站指令。例如 Nginx:

location /assets/ {
    add_header Cache-Control "public, max-age=31536000, immutable";
}
location / {
    add_header Cache-Control "public, max-age=60";
}

缓存预热:大版本上线前用 API 把首页和核心资源"拉热",避免上线瞬间出现一波 cache miss。缓存清理:内容更正后及时清掉旧版本,Cloudflare 支持按 URL、按前缀或按文件标签三种方式清除,API 示例:

curl -X POST "https://api.cloudflare.com/client/v4/zones/{zone_id}/purge_cache" \
  -H "Authorization: Bearer {token}" \
  -d '{"files":["https://example.com/cover.webp"]}'

还有一个容易被忽视的点是回源链路的防护。把源站 IP 藏起来、只允许 CDN 回源,是防止攻击者绕过 CDN 直接打源站的关键动作;多数服务商在免费方案里就能通过防火墙规则或"仅允许 CDN 回源"开关完成。另外,大型站点常给 CDN 配"源站盾"(Origin Shield),让所有边缘节点先汇总到一个中间层再统一回源,进一步降低源站请求数。

性能指标监控

部署后别只看"感觉变快了",用数据说话:

  • CDNPerf:横向对比不同 CDN 服务商的全球延迟
  • PageSpeed Insights:观察 Core Web Vitals 三个指标是否改善
  • GTmetrix:看瀑布图里哪些资源还在回源、哪一步耗时最长

建议每月抽查一次命中率和回源率。指标异常回落时,优先检查是不是新增了不带哈希的静态文件,或某条缓存规则被误改成 Bypass。

常见问题

  • 改了源站内容,用户还是看到旧版? 先清 CDN 缓存,再确认源站 Cache-Control 的 TTL 没有设得过长。
  • Flexible 模式下图片加载失败? Flexible 用 HTTP 回源,若源站强制跳转 HTTPS 会造成重定向循环,改成 Full 即可。
  • 命中率低怎么办? 检查是否有大量带查询参数的 URL(如 ?utm_source=),这类 URL 默认不缓存,需要配置"忽略查询参数"。

16IDC 观察

对绝大多数网站来说,Cloudflare 免费方案足够;等流量上来再结合 服务器选型的成本模型升级。CDN 的价值不只是加速,还有安全防护和全球可用性——它应该是所有面向用户网站的标配,而不是上线后才想起来补的选项。

参考:Cloudflare 缓存文档 https://developers.cloudflare.com/cache/