curl -sI https://example.com/ | grep -iE 'vary|cache-control' # 期望公共页面不带 Vary: Cookie
为了保证登录态隔离,响应加了 Vary: Cookie,上线后 CDN 命中率从 92% 掉到 5%,回源 QPS 翻了十几倍。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。
追下去是这么回事:Cookie 几乎每个用户都不同,把它放进缓存键等于给每个用户单独存一份。命中率自然塌掉。要隔离登录态,正确做法是私有内容不缓存,而不是把 Cookie 当缓存维度。
「Vary Cookie」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。权限不要一口气开到最大,先加到够用再往上试,范围小才好收。
把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。
处理上按这个顺序:登录态相关的响应改 private 不进共享缓存;公共内容去掉 Vary: Cookie 换成按需的维度;确实要按用户区分就用带用户标识的独立 URL;观察命中率和回源 QPS 是否恢复。
确认没问题再收工,公共页面命中率回到 90% 以上 回源 QPS 降下来 登录用户仍能看到自己的信息。
