缓存命中率是CDN最核心的指标,但很多人只盯一个平均数字,平均值会骗人,真正有诊断价值的是那张随时间和业务维度展开的图表,折线图上的一个毛刺,可能意味着一次回源风暴;一条缓慢下滑的曲线,可能暗示热点文件的过期策略正在失效,会看命中率图表,你才能从“CDN正常吗”升级到“CDN哪里不正常、为什么不正常”。
概念拆解:命中率不是只有一个“率”
先分清两种命中率:字节命中率和请求命中率,字节命中率 = 命中缓存下发的字节数 / 总回源字节数 + 命中字节数,它反映源站压力的真实释放程度,请求命中率 = 命中缓存的请求次数 / 总请求次数,它反映节点处理请求的效率,两者在图表上往往走势不同:小文件多时,请求命中率可能很高,但字节命中率低;大文件多时,请求命中率不起眼,但字节命中率一旦掉下来,源站带宽立刻飙升,图表中必须同时呈现这两条曲线。
另一个关键点是维度,一张“全局命中率曲线”往往把问题平整化了,假设整体命中率90%,但某个热门视频文件的命中率只有50%,在全局曲线里根本看不出来,正确的做法是把图表按域名、节点、文件类型、目录Tag做维度切分,技术基础好的同学应该明白:没有维度的命中率,只是KPI,不是诊断工具。

缓存命中率图表,从毛刺到平台期,读透CDN的体检报告
图表类型:不同形状,回答不同问题
- 时间序列曲线:最常用,横轴时间,纵轴命中率,适合看趋势、找毛刺,你需要关注两个位置:一是“突然掉下去”的尖峰,二是“慢慢爬不起来”的平台期,尖峰常由刷新缓存、源站故障、热点切换引起;平台期则提示缓存空间不足或TTL配置过长/过短。
- 热力图:横轴时间,纵轴节点或区域,颜色代表命中率,一张热力图能瞬间暴露“上海节点命中率80%,深圳节点命中率30%”的失衡,这种空间分布问题是单条曲线永远看不到的。
- 散点图/直方图:横轴文件大小或缓存年龄,纵轴命中率或请求量,用来分析“什么尺寸的文件命中率低”“哪些缓存时长区间的回源最多”,比如你会发现1KB的图片命中率很高,但10MB的压缩包命中率很低——因为文件大且请求分散,边缘缓存难以留存有效副本。
- 桑基图:展示请求从边缘节点→命中缓存→未命中→回源→源站响应整个流向的占比,适合用来定位“回源最多的是哪个业务、哪个路径、哪个状态码”,比单纯看数字直观得多。
方案对比:三家报表,各有各的成本
要拿到一张有价值的命中率图表,有三种做法。
方案A:CDN厂商自带报表。 零成本,控制台一键看,优点不用说,缺点是维度极有限,通常只有全局/域名级别的日均或小时粒度曲线,且往往延迟到T+1,你想看“某个节点在昨天下午3点对jpg文件的命中率”基本做不到,它适合小规模业务或日常粗粒度巡检。
方案B:自建日志采集分析。 把CDN访问日志接进ClickHouse或ES,用Grafana画图表,优点是可以任意切维度,实时性可做到分钟级,但坑很多:日志格式因厂商而异,有的厂商默认不输出缓存命中标记(如X-Cache: HIT),需要额外开启;日志体量一大,存储和查询成本立刻上来;一旦字段解析出错,图表上的毛刺可能压根不是真实命中率,而是日志缺失,适合有一定运维基础、业务流量大且对定位速度要求严格的团队。
方案C:边缘实时监控。 通过CDN的边缘脚本或OpenAPI,直接在节点上采集命中率指标,用Prometheus暴露并接入Grafana,这是实时性最好、粒度最精细的方案,能按节点、按文件、甚至按单个Cache节点实例来观察,但前提是CDN厂商允许你这么干,或者你的CDN本身就是自建的,通用性差,通常只适合大厂或对CDN有深度定制的场景。
适用场景分析
- 创业公司、中小站点:方案A足够,多看看字节命中率和请求命中率的趋势是否一致,关注每日的波峰波谷即可。
- 电商大促、票务抢购:必须选方案B或C,大促期间热点URL集中,命中率会瞬间波动,你需要分钟级图表来触发告警,否则回源带宽打爆源站,损失不可估量。
- 视频点播、文件下载:重点看字节命中率,且要按文件大小分段看,这类业务适合方案B,因为会话日志里能拿到每个文件的请求数和流量,方便做预缓存策略分析。
- 多CDN调度或混合云架构:方案C是必需品,你需要不同CDN在同一时段的命中率对比图,才能做流量调度决策。
选型建议
别一上来就搞自建,先问CDN厂商有没有“实时日志推送”或“自定义指标上报”能力,如果它有实时日志,优先用日志服务+查询分析,不要自己搭ES集群,Grafana的维护成本不低,除非你已经有现成的监控体系。
在图上,至少保留三条曲线:请求命中率、字节命中率、回源带宽,这三条曲线叠在一起,才能判断命中率变化对源站的真实压力,请求命中率降了但字节命中率没降,说明大量小文件没命中,对源站压力不大,可能只是缓存头部配置错误;如果字节命中率骤降,同时回源带宽飙升,立刻查预热、查缓存刷新、查源站健康。
最后强调时间粒度:5分钟粒度适合抓毛刺,1小时粒度适合看趋势,千万不要用“一天一个点”去看命中率,那一天里的每一次回源风暴,都会被平均成一条平滑而平静的线。
缓存命中率图表是CDN的体检报告,它不是用来在周报里截个图证明“缓存生效了”,而是用来回答“哪里在痛,为什么痛”,下一次看到命中率下降,别急着加平均值线,先下钻到节点、文件、状态码,问一问那些回源请求到底是怎么发生的,所有合理的优化,都从读懂图表开始。
发表评论