先给结论:只要两个服务商都可能改动同一份线上文件,就必须先确定唯一写入方,再让另一方只读或只提交补丁。否则“谁最后上传谁生效”会造成覆盖,而且这种覆盖往往先表现为样式错乱、表单失效或页面回退,不会立刻被察觉。便宜报价常意味着双方都按自己的模板和流程改,冲突概率反而更高。
让两个服务商同时改同一个网站,实际只有两种可行安排。
不成立的是第三种:两人都往同一台服务器上传、都改同一套模板。这不是分工,是互相覆盖。判断该选哪种,看两个条件:改动是否触及同一批文件,以及是否有一方能提供可合并的版本记录。
如果两边都要动主题模板、公共样式表或数据库结构,只能选串行交接。此时谁便宜都不重要,因为并行改同一批文件时,后上传的一方会整体替换前者的版本。
如果一方只负责新增文章、产品或独立落地页,另一方只负责公共模板和样式,可以并行,但前提是内容方不动模板文件,模板方不批量覆盖内容目录。这个前提要写进双方的工作说明,而不是口头约定。
还有一个容易忽略的条件:是否有版本记录。用 Git 或同类版本工具时,两边的改动可以比对、可以回退,冲突会以“冲突标记”的形式暴露出来,而不是静默覆盖。纯 FTP 直传没有这层保护,两个上传动作之间没有任何比较环节。
假设一个场景:A 服务商改首页样式,B 服务商同时补十篇产品页。若 B 的发布流程会整体覆盖网站目录,A 刚改的样式表就会被 B 的旧版本替换。反过来,若 B 只通过后台发布内容、不触碰模板文件,A 的改动就安全。这两种结果的差别不在谁更专业,而在写入路径是否重叠。
第一步是冻结写入权。约定一个时间点,由一方导出完整站点文件和数据库,另一方在此之前只读不写。冻结后所有改动从这份快照出发,避免两边基于不同版本各改各的。
第二步是划边界并落到目录级。把“谁可以写哪些路径”列成清单,例如模板方只能写主题目录和公共样式,内容方只能写上传目录和数据库内容表。清单要具体到文件夹和文件类型,不能只写“样式”和“内容”这种模糊说法。
第三步是确定合并入口。有版本工具就统一走版本工具,每次改动先提交再部署;没有版本工具,就指定一个人作为唯一上传者,另一方把文件打包发给他。这个动作直接决定下一步:如果没人负责合并,冲突只会在几天后以页面错乱的形式出现。
第四步是验证。改动完成后,用同一组页面清单逐项核对,包括首页、栏目页、详情页和表单。核对时看的是实际线上文件,不是本地草稿。
覆盖不一定立刻表现为白屏。更常见的情况是首页正常、内页样式回退,或者某个表单还能打开但提交后无响应。原因是两边改的文件不同,被覆盖的那部分可能几天后才被访问到。
还有一种相反的情况:改动后页面反而变整齐了,于是被当成“合并成功”。但这可能只是后上传的一方恰好包含了较早的改动,属于时间上的巧合,不是流程正确。要区分这两种解释,可以比对文件的修改时间和版本记录:如果最后一次上传的文件时间早于另一方的改动时间,说明后者的改动已经丢失。
另一种合理解释是缓存。访问量下降、页面显示旧版,未必是覆盖,也可能是浏览器或服务器缓存尚未更新。此时先清缓存再核对源文件,不要直接断定某一方覆盖了另一方。
如果两个服务商改动的是完全不相交的站点,例如一个管主站、一个管独立活动页,且活动页不引用主站的公共文件,就不需要冻结和合并流程。但只要共用同一套模板、同一份样式表或同一个数据库,边界就必须明确。
选择便宜的服务商本身没有问题,问题在于把“便宜”当成可以省掉协调步骤的理由。协调成本通常低于一次覆盖后的返工成本。把唯一写入方、目录边界和验证清单三件事定下来,再让两边开工,覆盖风险才会真正下降。