要排除缓存造成的假象,最关键的一步是用独立的、无缓存的请求去对比你看到的页面与服务器实际返回的内容。如果你只在同一个浏览器里刷新,看到的可能一直是本地缓存或CDN边缘节点的旧副本,而不是vip域名当前真实的解析与内容状态。判断顺序应该是:先确认解析结果,再绕过缓存取源站响应,最后用多个独立环境交叉验证。
vip域名出现“改了没生效”或“内容还是旧的”这类现象,可能原因至少有三层,不要一上来就断定是某一种:
准备阶段要做的,是记录三个可核对的事实:当前解析到的IP、你期望看到的内容、你实际看到的内容。把这三项写下来,后面的对比才有依据。如果连解析目标都不清楚,任何“清缓存”操作都只是碰运气。
这是本题最关键的一步。用命令行直接向源站发起请求,跳过浏览器和CDN的缓存层,观察返回内容与响应头。
假设源站IP是203.0.113.10,域名是example-vip.com,可以执行:
curl -I --resolve example-vip.com:443:203.0.113.10 https://example-vip.com/
这里--resolve的作用是强制把域名指向指定IP,绕开本地DNS缓存。查看响应头中的Cache-Control、Age、X-Cache等字段:Age数值较大通常说明命中了缓存;X-Cache: HIT表示CDN返回的是缓存副本。再取一次正文:
curl --resolve example-vip.com:443:203.0.113.10 https://example-vip.com/ | head -50
如果源站返回的是新内容,而浏览器里仍是旧内容,问题基本定位在缓存层;如果源站返回的也是旧内容,那问题在源站发布环节,与缓存无关。这个判断能避免你在错误的方向上反复清缓存。
单个结果不足以定论,因为一次请求可能恰好命中或未命中缓存。验证时至少做三组对比:
判断标准:如果只有你自己的设备看到旧内容,属于本地缓存;如果多个独立环境都看到旧内容而源站是新内容,属于CDN或代理缓存;如果所有环境包括源站直连都是旧内容,属于源站未更新。三种结果的下一步处理完全不同,所以不要跳过区分。
确认是缓存问题后,处理方式取决于缓存类型。CDN缓存一般通过控制台刷新对应URL或目录;本地缓存通过无痕模式或清除站点数据解决。更稳妥的做法是检查源站返回的缓存头是否合理:静态资源可以设较长缓存,HTML入口页通常设较短缓存或协商缓存,避免更新后长时间不生效。
维护阶段建议固定一个核查习惯:每次发布后,先用源站直连请求确认内容已更新,再观察CDN是否按预期回源。这样能把“缓存假象”和“发布失败”两类问题分开,减少误判。
下一步:选一个你正在处理的vip域名,按上面的curl --resolve命令取一次源站响应,记录Age和X-Cache的值,再决定是刷新缓存还是回查源站发布流程。