排除缓存造成的假象,核心做法是先把“你看到的页面”与“搜索引擎实际抓取到的页面”分开核对:用带随机参数的URL、强制刷新、查看HTTP响应头中的缓存字段,再对照抓取工具返回的原始HTML。如果两者内容不一致,说明你看到的很可能是缓存副本,而不是索引里的真实状态。
假设你负责一个多人协作的企业站,运营同事把某产品页的<title>从“旧型号报价”改成“新型号报价”,并同步更新了正文首段。你在浏览器里打开页面,看到的是新标题,于是判断“已经改好,可以交付”。但第二天用抓取工具查看,返回的HTML里仍是旧标题。这时有两种可能:一是页面本身没发布成功,二是你看到的是本地或CDN缓存。要区分它们,不能靠反复刷新浏览器,而要靠下面几项检查。
在地址后面加一个无意义但每次不同的查询参数,例如 ?cachecheck=20240101a。多数缓存会把带不同查询串的请求当作不同资源,从而回源获取最新内容。如果带参数时看到新内容、不带参数时看到旧内容,基本可以判断是缓存层在起作用。注意这只是判断手段,不是修复手段;带参数的URL不应作为正式对外链接,也不应写进站点地图,否则可能造成重复内容。
浏览器开发者工具的“网络”面板里,查看该文档请求的响应头,重点关注 Cache-Control、Age、ETag、Last-Modified 以及CDN常见的 X-Cache 一类字段。若 Age 大于0,说明响应来自缓存;若 X-Cache 显示命中,也说明没有回源。把这些字段和源站直接返回的响应头对比,才能确认是哪一层缓存。不同服务商的字段命名不同,遇到不认识的字段应查该服务商文档,而不是猜测。
多人协作时常见的错误,是把 robots.txt 当成万能开关。robots.txt 只能限制抓取,不能可靠地把已收录页面从索引中移除;如果页面已被收录,仅靠禁止抓取往往不会让它消失,反而可能让搜索引擎无法读到 noindex 而继续保留旧结果。站点地图同样不保证收录,它只是提交候选URL的渠道。HTTPS 也不等于页面安全无漏洞,更不直接等于排名提升。这些区别在交付文档里应写清楚,避免下游同事按错误前提继续操作。
为减少返工,建议每次改动后固定记录以下项目,并注明检查时间与执行人:
Age、Cache-Control 的值;判断结果的方式很直接:源站与抓取结果一致,才说明改动真正进入可被抓取的状态;只有浏览器一致而抓取结果不一致,就应先处理缓存,而不是继续改内容。适用条件是页面经过CDN、反向代理或框架层缓存;如果站点没有任何缓存层,这套检查会很快通过,此时应转向排查发布流程本身。
挑一个最近改过、但状态存疑的页面,按上面的清单完整走一遍,把源站响应头、带参数响应和抓取结果三项并排记录在同一份交付文档里。这样下次协作时,任何人接手都能看到“当时看到的是什么、依据是什么”,而不是只留下一句“我这边显示已经更新了”。