缓存命中率
内存缓存的典型实现
一个模块级内存变量 + TTL:
remoteCache = 模块级变量
CACHE_MS = 10 分钟
只有「同一页面会话、且 10 分钟内」再次访问,才命中缓存
命中率为 0 的三种原因
| 原因 | 说明 |
|---|---|
| 页面刚刷新 / 进程重启 | 内存缓存清空,第一次必然现拉 |
| 传了 force=true / 点了重试 | 主动绕过缓存 |
| 上次 fetch 失败 | 没写进缓存就抛错,下次仍要走网络 |
诊断时的关键区分
⚠️ 测量动作本身可能绕过被测对象。
实测踩过:在 bash 里直接 curl 拉接口,绕过了应用自己的缓存层 —— 于是「cache hit = 0」是必然的,因为根本没经过缓存。这是测错了对象,不是系统有问题。
正确顺序:
1. 先确认「你在哪看到的这个指标」(GUI 面板?还是自己 curl 的统计?)
2. 若是自己 curl → 那是绕过缓存的结果,不说明问题
3. 若是应用面板 → 再查上面三种原因
可复用的判断
看到一个「指标异常」时,先问:这个指标是从哪来的、经过了我以为的那条路径吗?
相关
- 判据要用真值而非代理 —— 本条是该 synthesis 的一处实例:拿「命中率数字」当实现是否有 bug 的判据
- 口径先于数值 —— 同源判断:先确认数值的来路,再解释它