短链服务把目标地址从 A 改成 B,部分用户点开还是跳到 A,响应头里 Age 是 3600,X-Cache 显示 Hit。碰到这种情况,我一般先确认改动有没有真的生效。
原因不复杂,302 本身可以被缓存,只要响应里带了新鲜度信息或者代理有默认规则。改配置只改了源站,边缘上那份旧跳转还在有效期内。用户拿到的 Location 是缓存里的。
碰到「302 被缓存」这类问题,我习惯先把当前配置原样备份一份,改坏了立刻换回来,不用现场推。别只看报错的最后一行,往上看几行,真正的起因通常在上面。
curl -sI https://s.example.com/a1 | grep -iE 'location|cache-control|age' # 期望 no-store 且 Location 为新地址
同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。把这次用到的命令存进笔记,比记住结论有用,换个环境还能照着走。
具体做法是,跳转响应加 Cache-Control: no-store;已经缓存的地址手动刷一遍边缘;确实需要缓存就用 301 加长缓存 改的时候换 URL;验证时看响应头里的 Age 和 Location。
最后用这个标准收尾,跳转响应不再进缓存 修改目标后所有用户下一次点击就跳到新地址。
