官方公告:CDN 回源配置优化建议

回源配置直接影响CDN性能与成本。本文从实际问题出发,结合Cloudflare官方文档,给出缓存规则、Worker干预、DDoS防护等优化建议,并指出常见误区与适用条件。

官方公告:CDN 回源配置优化建议
封面图:ZuCDN · ZuCDN 原创

很多运维在配置 CDN 回源时,只关注“源站地址”和“回源 Host”,却忽略了缓存规则、Worker 干预和 DDoS 防护这三层对回源流量的决定性影响。结果往往是:缓存命中率不低,但源站压力依然大,回源带宽成本居高不下。本文基于 Cloudflare 官方文档,从“回源流量从哪里来”这个实际问题切入,给出可落地的优化建议,并指出常见的失败条件。

先搞清楚:回源流量到底受谁控制?

回源请求的产生,要么是缓存未命中(比如首次访问、缓存过期),要么是缓存被绕过(比如带 Cookie 的请求、动态资源)。Cloudflare 的缓存文档明确指出,缓存将频繁访问的内容副本存储在全球分布式数据中心,更靠近用户,从而减少源站负载。因此,CDN 回源配置的核心不是设置源站 IP,而是控制“什么内容被缓存、缓存多久、何时绕过缓存”。

优化一:用 Cache Rules 精确控制缓存行为

默认情况下,Cloudflare 只缓存静态文件扩展名(如 jpg、css、js),HTML 通常不缓存。很多站点回源量大,就是因为没对 API 响应或动态页面做缓存策略。Cloudflare 的 Cache Rules 允许你指定哪些资源应被缓存以及缓存多长时间。操作时,你可以在规则中匹配 URL 路径或文件扩展名,设置 TTL 或“浏览器缓存过期时间”。

一个典型场景:一个图片站,源站图片很少变化,但默认 TTL 只有 4 小时,导致每天回源多次。通过 Cache Rules 将图片路径的 TTL 设为 30 天,回源量能下降 90% 以上。但要注意:不要对所有资源设置过长 TTL,否则更新内容时用户会看到旧版本。建议对静态资源设置长 TTL,对 HTML 设置 0 或短 TTL,并配合缓存清除 API。

优化二:用 Tiered Cache 降低回源压力

如果你的源站位于单一地区,而用户分布全球,直接回源可能跨洲传输,延迟和成本都高。Cloudflare 的 Tiered Cache 功能会在多个位置缓存频繁访问的内容,这样边缘节点可以从上层缓存获取数据,而不是直接回源。启用后,回源流量会显著减少,因为中间层缓存分担了大部分请求。官方文档提到,Tiered Cache 通过缓存多个位置的内容来优化交付并减少源站流量。配置很简单:在 Cloudflare 控制台开启 Tiered Cache 即可,无需额外规则。但需要注意,Tiered Cache 需要源站支持,且如果源站有动态内容,建议只对静态资源启用。

优化三:用 Workers 干预回源请求

有些场景下,你需要更精细的控制,比如根据 User-Agent 或地理位置返回不同内容,或者对特定请求直接响应而不回源。Cloudflare Workers 允许你在边缘运行代码,可以拦截请求并直接返回响应,从而完全避免回源。官方文档指出,Workers 是一个无服务器平台,可以连接到外部服务,并通过绑定实现数据库、存储等功能。例如,你可以写一个 Worker,对健康检查请求直接返回 200,不触发回源;或者对已知的爬虫请求返回 403,减少无效回源。

但 Workers 也有失败条件:如果 Worker 代码中有误,可能导致请求失败;而且 Workers 本身有请求次数限制,超出会收费。因此,建议先在小流量上测试,确保逻辑正确后再全量部署。

优化四:结合 DDoS 防护,避免攻击流量打爆源站

回源配置不仅仅是性能优化,还涉及安全。当 CDN 受到 DDoS 攻击时,如果防护策略不当,攻击流量可能穿透 CDN 直接到达源站,导致源站宕机。Cloudflare 的 DDoS 防护文档说明,其系统会自动检测并缓解分布式拒绝服务攻击,包括 L3/4 和 L7 层的攻击。你可以自定义托管规则集,调整缓解策略。例如,对于 SYN 泛洪,可以启用更严格的防护;对于 HTTP 泛洪,可以设置速率限制。

关键点:确保 DDoS 防护开启,并配置适当的规则,否则攻击流量可能绕过缓存直接回源。但也要注意,过激的防护规则可能误伤正常用户,比如拦截了合法爬虫。因此,建议在攻击发生时调整规则,并观察日志。

常见误区:这些操作可能适得其反

  • 误区一:缓存所有内容。动态内容(如购物车、用户登录状态)如果缓存,会导致数据不一致。官方文档建议只缓存静态资源,动态请求应绕过缓存。
  • 误区二:忽略缓存清除。更新文件后,如果不主动清除缓存,用户会看到旧版本。Cloudflare 提供了立即清除缓存的功能,可以清除单个文件或全部缓存。务必在发布流程中加入清除步骤。
  • 误区三:过度依赖 Workers。Workers 虽然灵活,但会增加延迟和成本。对于简单需求,应优先使用 Cache Rules 和 Tiered Cache。
  • 误区四:忽视 DDoS 防护规则。很多用户默认开启基础防护,但攻击者可能利用规则漏洞。建议定期审查防护规则,并启用高级 DDoS 保护(如果有)。

总结:回源配置的决策顺序

优化回源配置,建议按以下顺序检查:

  1. 分析日志,找出回源最多的 URL 和类型。
  2. 对静态资源配置 Cache Rules,设置合理 TTL。
  3. 启用 Tiered Cache,减少跨区域回源。
  4. 对特殊请求(如 API、爬虫)使用 Workers 干预。
  5. 确保 DDoS 防护开启,并配置适合业务场景的规则。

注意,以上操作并非一劳永逸,需要根据业务变化持续调整。官方文档也强调,缓存行为是动态的,你可能需要定期检查和优化。

参考资料

延伸阅读