苔 苔痕 MOSSLINE
系统设计

命中率 97% 是算出来的,不是调出来的

命中率不是一个可以“优化”的指标,它是内容结构、缓存粒度和失效策略共同作用的结果。

命中率不是一个可以“优化”的指标,它是内容结构、缓存粒度和失效策略共同作用的结果。

三个变量

命中率 = 可缓存请求 / 总请求 × 缓存有效期内的重复访问率。

拆开看只有三个变量:

  1. 可缓存比例:登录态、评论提交、后台请求天然不可缓存
  2. 粒度:整页缓存命中率高但失效粗糙,片段缓存相反
  3. 有效期:越长命中越高,但内容越旧

我的取值

内容站的读远多于写,所以选择整页缓存 + 标签失效:

对象TTL失效标签
首页120 秒posts, terms
文章页300 秒post:{slug}
分类页300 秒posts, terms
站点信息600 秒settings

写入时按标签清除,而不是全清。改一篇文章只影响它自己和列表页,其它页面继续命中。

97% 怎么来的

日均 4200 次请求,其中约 3800 次是匿名阅读,3900 次落在有效期内。

3800 / 4200 ≈ 90%,再加上静态资源与接口的局部缓存,整体到 97%。

这个数字不需要监控面板去“优化”,它是结构决定的。

如果命中率低于 80%,先别调 TTL,去看看是不是把登录态也缓存了。

留言 0

评论会在审核后显示

还没有留言,来说点什么吧。

支持纯文本,提交后不可修改。