结论是:不要按“谁先动手谁负责”来分,而要按“谁拥有哪个文件、哪类改动”来分。两个服务商同时改同一网站时,覆盖几乎都发生在共享入口上,比如同一个模板、同一个插件目录、同一份 robots.txt。可行做法是先冻结共享文件,把改动拆成互不重叠的路径和职责,再用可核对的提交记录验证是否真的没有交叉。
一个常见现象是:两个服务商各自只处理少量页面时,冲突很少出现;一旦同时进入批量改动阶段,覆盖就集中爆发。这里有两个解释,需要分开看。
解释一:冲突来自物理文件重叠。A 服务商改站点头部模板,B 服务商也在改同一模板里的结构化数据,后保存的一方会覆盖先保存的一方。这种情况与页面数量无关,只与是否动了同一文件有关。
解释二:冲突来自流程缺少唯一归属。即使两人改的是不同文件,如果都通过同一个后台编辑器或同一套发布流程提交,也可能互相回滚。此时问题不在文件本身,而在没有约定谁在什么时间、以什么方式发布。
区分这两种解释的证据是:查看改动前后的文件差异记录。如果差异显示同一路径的同一片段被反复替换,属于解释一;如果同一路径内容没变,但线上版本在两次发布之间来回跳,属于解释二。前者靠划分文件解决,后者靠划分发布窗口解决。
页面数量看起来好分,实际最容易踩坑,因为一个页面往往同时依赖模板、样式、脚本和内容。更稳的做法是按目录和文件类型分所有权。
一个实际动作是:在开始改动前,把上述四层各写一行,标注负责人和禁止他人改动的路径。结果是,之后任何一次覆盖都能追溯到某个具体路径,而不是笼统地说“对方改坏了”。这一步直接影响下一步——只有路径归属清楚了,才谈得上合并和验收。
即使文件归属清楚,也可能因为同时发布而互相回滚。可行约定是设置发布窗口:同一时间段内只有一方拥有线上写入权,另一方只提交到暂存环境。
具体动作可以是这样:假设 A 服务商负责模板层,B 服务商负责内容层。约定每天上午 A 发布模板改动,下午 B 发布内容改动;B 在上午只做本地或暂存环境准备,不写线上。
这个动作的结果是,线上版本在任一时点只有一个来源。如果下午 B 发布后模板异常,就能判断是内容层改动引发,还是上午模板层遗留问题,排查范围立刻缩小一半。这里的假设是双方都能访问暂存环境,且暂存与线上结构一致;如果暂存与线上差异很大,发布窗口只能减少冲突,不能消除冲突。
口头说“我没动那个文件”不可靠。可核对的证据是改动前后的差异清单,至少覆盖路径、改动类型和时间。
这里要说明一个边界:抓取量或请求量突然归零,不能单独证明是覆盖造成的。它也可能来自服务器波动、统计口径变化或外部流量本身下降。差异清单只能证明文件是否被改,不能直接证明排名或流量变化的原因。把这两件事分开,才不会在错误方向上反复返工。
如果两个服务商实际上属于同一团队、共享同一套发布权限和同一份任务看板,那么按目录划分所有权意义有限,重点应放在统一发布流程上。反过来,如果网站规模很小、只有几个静态页面,强行拆分模板层和内容层反而增加沟通成本,此时更简单的方式是只允许一方改动,另一方只提建议。
判断依据不是服务商数量,而是共享入口的数量。共享入口越多,越需要明确唯一负责人;共享入口越少,越可以接受先到先改。把这个条件写进协作约定,比事后争论谁覆盖了谁更有效。