缓存命中率

**结论:「cache hit 为 0」通常不是 bug,而是「每次都是新会话的首请求」。** 先排除这个,再怀疑实现。

内存缓存的典型实现

一个模块级内存变量 + TTL:

remoteCache = 模块级变量
CACHE_MS = 10 分钟
只有「同一页面会话、且 10 分钟内」再次访问,才命中缓存

命中率为 0 的三种原因

原因说明
页面刚刷新 / 进程重启内存缓存清空,第一次必然现拉
传了 force=true / 点了重试主动绕过缓存
上次 fetch 失败没写进缓存就抛错,下次仍要走网络

诊断时的关键区分

⚠️ 测量动作本身可能绕过被测对象。

实测踩过:在 bash 里直接 curl 拉接口,绕过了应用自己的缓存层 —— 于是「cache hit = 0」是必然的,因为根本没经过缓存。这是测错了对象,不是系统有问题。

正确顺序:
1. 先确认「你在哪看到的这个指标」(GUI 面板?还是自己 curl 的统计?)
2. 若是自己 curl → 那是绕过缓存的结果,不说明问题
3. 若是应用面板 → 再查上面三种原因

可复用的判断

看到一个「指标异常」时,先问:这个指标是从哪来的、经过了我以为的那条路径吗?

相关