命中率不是一个可以“优化”的指标,它是内容结构、缓存粒度和失效策略共同作用的结果。
三个变量
命中率 = 可缓存请求 / 总请求 × 缓存有效期内的重复访问率。
拆开看只有三个变量:
- 可缓存比例:登录态、评论提交、后台请求天然不可缓存
- 粒度:整页缓存命中率高但失效粗糙,片段缓存相反
- 有效期:越长命中越高,但内容越旧
我的取值
内容站的读远多于写,所以选择整页缓存 + 标签失效:
| 对象 | TTL | 失效标签 |
|---|---|---|
| 首页 | 120 秒 | posts, terms |
| 文章页 | 300 秒 | post:{slug} |
| 分类页 | 300 秒 | posts, terms |
| 站点信息 | 600 秒 | settings |
写入时按标签清除,而不是全清。改一篇文章只影响它自己和列表页,其它页面继续命中。
97% 怎么来的
日均 4200 次请求,其中约 3800 次是匿名阅读,3900 次落在有效期内。
3800 / 4200 ≈ 90%,再加上静态资源与接口的局部缓存,整体到 97%。
这个数字不需要监控面板去“优化”,它是结构决定的。
如果命中率低于 80%,先别调 TTL,去看看是不是把登录态也缓存了。
留言 0
评论会在审核后显示还没有留言,来说点什么吧。