
首先在应用层明确资源分级:静态资源、半动态资源、完全动态资源。通过设置合理的 Cache-Control(如 max-age、public/private、must-revalidate)配合 CDN 的边缘缓存 TTL,可实现二层缓存协同。对于需要 CDN 能够绕过浏览器缓存的资源,使用 Surrogate-Control 将边缘策略独立于客户端策略。
静态资源设长 TTL 并用版本化 URL;半动态资源用短 TTL 加上 stale-while-revalidate;动态或敏感数据用 private 或 no-store。
强缓存(max-age)适用于不频繁变更且可版本化的资源,减少回源请求;协商缓存(ETag/Last-Modified)适合变更频率中等的资源,允许 CDN 或浏览器向源服务器验证并在未变更时返回 304。应用层应同时提供 ETag 与合理的 Last-Modified,并让 CDN 支持条件请求转发。
避免对大批量小文件都使用短 TTL 并频繁回源;对 304 响应考虑响应头携带 Surrogate-Control,以便 CDN 决定是否更新边缘对象。
HTTP/2 的多路复用和头部压缩降低往返开销,使得频繁的小对象请求更高效;QUIC/HTTP3 在丢包场景下恢复更快,提升边缘与客户端交互性能。应用层应减少冗余头部、启用压缩并利用连接复用,配合 CDN 的协议支持提升整体命中与响应速度。
启用 TLS 0-RTT(注意重放风险),让 CDN 与源启用相同协议栈,减少中间层协议转换带来的延迟。
对个性化或用户相关内容,使用缓存分片与缓存键(Cache Key)策略:将公共部分走 CDN 缓存,个性化部分用边缘计算(Edge Functions/Workers)或 ESI(Edge Side Includes)在边缘拼装。通过在 CDN 上设置基于路径、查询参数、Cookie 的 Cache Key,可以控制缓存粒度。
若必须回源,可对响应增加 stale-if-error 与短期 TTL 来保证可用性,同时用条件请求减少回源负载。
建立指标体系:缓存命中率、回源率、404/5xx 回源占比、响应时间、带宽消耗。使用 CDN 提供的实时日志和应用层日志关联分析,定位命中率低的资源类型或路径。通过 A/B 测试不同 TTL、Cache Key 或启用/停用协商缓存来量化影响。
常用操作包括定期清理过期 Cache Key、自动化前端资源版本化、脚本化回源预热(warm-up)与按需清除(purge),并把这些流程纳入 CI/CD。