先给结论:不要从百度一侧找原因,而要在发布链路里找到“最后一次写入配置”的那一步。假设一个场景:某站用模板生成 robots.txt,发布系统在每次上线时从基础分支读取旧版文件,把运维手动改过的规则覆盖回去;表现是部分新页面收录延迟明显拉长。此时正确动作是给配置写入加一条可追溯记录,确认是哪个任务、哪次提交、哪个分支写入了旧值,再决定修发布流程还是修配置源头。
百度收录延迟的常见解释不止一种:抓取预算被分走、新页面缺少内链、内容质量未达门槛、robots.txt 或 meta 指令阻止抓取、站点地图未及时更新。配置被覆盖回旧值只是其中一种,而且它的特征是“变化点与发布时间对齐”,不是“所有页面一起变慢”。
可区分的证据方向:
注意:抓取量归零或某项统计下降,不能单独证明配置被覆盖。CDN 缓存、源站故障、临时限流都可能造成同样现象,需要先核对文件实际返回内容。
假设情境继续:运维发现线上 robots.txt 里有一条两年前就删掉的 Disallow,而本地仓库里没有这条规则。这说明写入来源不是当前分支,而是某个缓存层或旧产物。
可以按以下顺序做一次最小追踪:
这个动作的结果会直接决定下一步:如果日志显示读取的是旧分支,修发布脚本的读取路径;如果日志显示读取的是正确分支但线上仍是旧值,问题在缓存或同步环节,改脚本没有意义。这一步做错,后面所有修复都会反复。
单个页面手工改配置后生效,容易让人以为流程已经修好。但规模化发布时,例外来自三类边界:
因此不能把“手工改一次就好了”当作可复制的方案。需要确认的是:在所有发布路径上,配置写入是否只有一个权威来源。如果不是,先收敛来源,再谈修复。
两个选择都成立,取决于旧值的来源位置:
判断依据是构建日志里的读取路径,而不是线上文件的内容。线上文件只能告诉你“现在是旧值”,不能告诉你“谁写的”。
一个可执行的收尾动作:在发布流程里加一条写入后的校验,比对线上返回内容与预期配置的哈希值,不一致就中止发布并记录写入方。这样下一次覆盖发生时,来源会直接出现在日志里,而不是靠事后排查。这个校验只解决“发现和定位”,不承诺百度会因此加快收录;收录延迟是否缓解,仍取决于抓取、内容与内链等条件。