1. CDN缓存不是“设置越长越好”,它是靠精细化策略打造的武器;掌握好TTL与缓存规则即可将回源压力降到最低。
2. 实战证明:不同内容类型在视频网站上应采用分级TTL,直播、点播、缩略图各不相同,才能显著提升缓存命中率。
3. 大胆原创建议:用“版本化文件+长TTL”组合对静态资源进行强缓存,对清单与播放列表用超短TTL并配合stale策略,性能与一致性双赢。
作为一名长期在视频分发、CDN优化一线的工程师/作者,我将以经历验证的视角拆解:为何你的CDN缓存看似“命中率高”却仍然高耗、为何更改TTL后体验突然波动,以及如何用规则矩阵把体验和成本同时拉下来。
先说核心概念:在视频网站场景,最关键的是区分“控制层”(播放清单、用户鉴权)与“内容层”(视频分片、封面、静态资源)。对这两类资源施加不同的缓存规则与TTL,是提升整体表现的第一步。
策略一(点播VOD):对视频分片(.ts/.m4s)可设定中长TTL(例如1小时到7天),但配合URL版本化(fingerprint)强制长期缓存。对清单(manifest/playlist)设极短TTL(1-10秒),并开启stale-while-revalidate以减少卡顿。
策略二(直播/低延迟):直播清单必须短TTL(TTL通常为1-3秒),边缘应启用快速回源与低延迟刷新策略;若强制缓存过长,会导致延迟累积和观感崩坏。
策略三(封面与静态文件):对封面、海报、JS/CSS等资源采用长TTL(7天到365天),并使用版本化URL或Query参数作为缓存破坏机制,彻底避免不必要的回源。

细节要点:在响应头优先使用Cache-Control(例如public, s-maxage, stale-while-revalidate, stale-if-error),配合Origin设置sensible TTL。注意不要让Set-Cookie或Vary: Cookie无意中将资源变为不可缓存,导致严重的缓存穿透。
缓存规则优先级:路径规则(基于URL路径/扩展名)> 查询参数策略(ignore或include)> 请求头(如User-Agent、Accept)> Cookie。合理的缓存键(cache key)能把缓存命中率提升数倍。
度量指标:关注请求命中率、字节命中率、回源请求数与回源带宽。经验表明,把静态资源与分片的字节命中率提高到80%+,可将回源带宽压缩到原来的30%以下,显著节省成本并提升秒开率。
风险与防护:长期TTL带来的风险是“变更传播慢”,必须配合高效的主动失效(purge)策略与版本化机制;短TTL则会增加回源压力,需通过边缘回源缓存(stale策略)缓冲突峰。
实操示例:对域名/static/* 设置 Cache-Control: public, max-age=31536000(1年),文件名含hash;对/live/*.m3u8 设置 Cache-Control: public, max-age=2, stale-while-revalidate=5;对/segment/*.ts 设置 Cache-Control: public, max-age=3600。
对策优化建议:自动化A/B测试不同TTL组(例如30s/300s/3600s),并监控用户感知指标(首帧时间、卡顿率)与回源量。数据驱动地找到最佳折中点,而非凭感觉调参。
结语(权威性声明):本文基于长期在多家大型视频网站的实践经验与链路级调优方法整理,能帮助工程团队在保障一致性的前提下,用更聪明的缓存规则与TTL策略把成本与体验双向优化。
作者:资深CDN与视频分发工程师 — 如需根据你站点的访问分布和业务形态做一份定制化的缓存策略与TTL矩阵,我可以提供一对一咨询与实战配置清单。