排除缓存造成的假象,核心做法是让对比双方处在同一缓存状态下:用无痕窗口加禁用缓存的方式重新请求,或者给URL加一个一次性查询参数强制回源,再对比主域名和二级域名的响应头、正文与状态码。如果刷新后差异消失,说明之前看到的是缓存副本;如果差异仍在,才需要继续查配置、DNS或服务端逻辑。
主域名和二级域名常被放在同一台服务器或同一个CDN下,但缓存策略可能不同。判断时不要只看浏览器显示的内容,要看响应头里的缓存相关字段,例如 Cache-Control、Age、ETag、Last-Modified 以及CDN自己加的命中标识。若二级域名的 Age 明显大于0,而主域名是0或没有该字段,说明二级域名返回的是缓存副本,两者的差异可能只是时间差,不是真实配置差异。
可以按下面顺序执行:
?nocache=20240101a,再次访问,观察差异是否变化。主域名和二级域名虽然共享同一套后端,但在缓存层面是分开的键。常见差异包括:
这些差异中,只有第一项是纯缓存问题,后三项即使清掉缓存也会复现,需要分别处理。
在命令行里分别请求两个域名,是时间和人手有限时最快的方式。示例(假设域名为 example.com 和 sub.example.com,仅作格式演示):
curl -I https://example.com/page
curl -I https://sub.example.com/page
对比输出中的 Cache-Control、Age、X-Cache、Via。如果二级域名出现 X-Cache: HIT 而主域名是 MISS,优先怀疑缓存。此时可以尝试对二级域名发起一次强制刷新(具体方法取决于所用CDN或代理,需查对应文档),再重新请求,看 Age 是否归零、内容是否与主域名一致。
如果两个域名的 Cache-Control 都是 no-store 或 private,却仍看到旧内容,那问题可能不在HTTP缓存,而在DNS、本地hosts、服务端页面缓存或数据库查询缓存。这时应换网络、换设备再测一次,缩小范围。
按代价从低到高排序:
判断结果:如果第1、2步之后差异消失,就不必再查CDN规则,直接记录“缓存假象”即可;如果第3步显示两个域名回源结果就不同,则应转向查回源Host、Cookie作用域或后端按域名分支的逻辑,而不是继续清缓存。
robots.txt 的抓取限制不等于可靠的索引移除,它只影响爬虫抓取,不影响已缓存页面被用户看到。站点地图不保证收录,也不能用来判断缓存是否生效。如果发现搜索结果里主域名和二级域名展示不同,先确认那是搜索引擎自己的缓存快照还是实时抓取结果,两者处理方式不同。
下一步:选一个具体路径,用无痕窗口和curl各测一次主域名与二级域名,把响应头里的 Age 和缓存命中标识记下来。若两者一致,就不用再花时间在缓存上;若不一致,再按CDN、回源Host、Cookie的顺序逐项核对。