你有没有遇到过:上午打开同一个新闻网站,秒开;下午再点,却要等两三秒才加载出来?后台没变,网速也没降,问题可能就出在「网络缓存命中率」上。
缓存不是“存东西”的仓库,而是“抄近道”的捷径
想象你常去一家面馆,老板记性好,知道你每次都要一碗牛肉面加溏心蛋。你刚进门,他手 already 在下面了——这叫「命中」。要是今天你突然想吃凉皮,他得现问、现备料、现做,慢了一大截——这叫「未命中」。
网络缓存也一样。浏览器、CDN 节点、甚至你家路由器,都会悄悄存下一些常用资源(比如网站的 logo、CSS 样式表、JS 脚本)。下次访问时,如果这些内容还在缓存里、且没过期,就直接本地读取,不用再跑一趟远路找服务器。
命中率 = 命中次数 ÷ 总请求次数 × 100%
举个真实例子:
某公司内部系统一天收到 10,000 次静态资源请求,其中 8,300 次是从 CDN 缓存直接返回的,剩下 1,700 次得回源站拉取。
那么它的缓存命中率就是:
8300 ÷ 10000 × 100% = 83%一般而言,CDN 的命中率稳定在 85%~95% 算健康;低于 70%,就该查查是不是缓存策略设错了,或者资源老被强制刷新。哪些操作会“搞砸”命中率?
• 地址后面随手加个 ?v=1.0.2 或 ?t=1715624000——哪怕文件一模一样,浏览器也当它是新东西,不走缓存;
• 开发者工具里勾选了「Disable cache」(关掉缓存),自己测着方便,但别忘了关掉再给用户看;
• 服务器返回的 Cache-Control: no-cache 或 max-age=0,等于告诉所有中间节点:“别存,每次都要问一遍”。
一个小技巧:用浏览器开发者工具(F12)→ Network 标签页,刷新页面,看每条请求的 Size 列——如果显示 from disk cache 或 from memory cache,那就是命中了;显示具体字节数(比如 24.6 KB),说明是重新下载的。
说到底,缓存命中率不是玄学指标,它背后是实实在在的资源复用逻辑。刷得快,不一定网好;刷得慢,也不一定服务器崩了——先看看缓存是不是“认出你来了”。