排除缓存造成的假象,核心做法是让不同来源的响应互相印证:先固定一个不经过本地缓存的请求方式,再对比DNS解析、服务器响应头和页面内容三层结果。如果只有浏览器里显示旧内容,而其他方式返回新内容,基本可以判断是缓存层在起作用,而不是主域名配置本身出了问题。
主域名选择常涉及裸域与www域、旧域与新域的切换。切换后看到“没生效”,可能来自四个位置:浏览器本地缓存、本机DNS缓存、中间CDN或反向代理缓存、服务器端页面缓存。它们的表现相似,但排查手段不同。
这里要区分“可能原因”和“已经定位的原因”。只看到旧页面,不能直接断定是浏览器缓存;必须用下面几种方式交叉验证后才能下结论。
命令行工具默认不走浏览器缓存,适合作为基准。以检查主域名返回为例,可以执行:
curl -I https://example.com
把示例域名换成你正在核查的主域名。重点看三处:状态码、location跳转目标、以及cache-control、age、x-cache一类响应头。如果age数值很大,说明响应来自中间缓存;如果cache-control允许长时间缓存,浏览器看到旧内容就属于预期行为。
再对比DNS结果:
nslookup example.com 8.8.8.8
把本机解析结果与公共DNS结果对照。两者指向不同IP时,问题在解析层,不在页面缓存。两者一致但页面仍旧,问题更可能在CDN或源站。
核查主域名时,真正要确认的是:目标域名是否返回预期内容,另一个域名是否按计划跳转,以及跳转是否稳定。缓存会让这三项看起来互相矛盾。建议按以下顺序执行:
?check=1,再请求一次。内容变化说明此前命中了缓存。适用条件是:你已经完成域名解析设置,正在确认生效情况。判断结果是:命令行与公共DNS一致、仅浏览器异常,属于本地缓存;命令行本身就返回旧内容,则要检查CDN缓存规则或源站配置,而不是继续清浏览器缓存。
清理手段各有代价,不宜一上来全部执行。清浏览器缓存只影响本机,成本最低,但无法解决CDN层问题。刷新CDN缓存影响所有访问者,可能带来回源压力,适合确认源站已更新之后再做。修改cache-control属于长期策略,会影响后续所有请求,改之前要确认新策略符合内容更新频率。
选择顺序建议是:先命令行取证,再判断缓存层级,最后只清理对应那一层。跳过取证直接全量刷新,容易把真正的主域名配置错误掩盖过去,下一次仍然复现。
另外注意,robots.txt的抓取限制不等于可靠的索引移除,站点地图也不保证收录。这两项与缓存假象是不同问题,排查主域名生效时不要混在一起判断。
选一个你正在核查的主域名,先执行一次命令行请求并保存完整响应头,再与浏览器结果逐项对照。把不一致的字段记下来,就能确定该清哪一层缓存,或者该回头检查解析与跳转配置。