实务专题 · 交付验收

避免CMS旧编辑窗口覆盖较新版本

两位员工同时打开同一份规格内容,可能在不知情时互相覆盖。如果系统没有检查编辑起点的版本,“保存成功”提示就无法证明交付可靠。本文帮助企业在采购共享CMS编辑前约定冲突处理。

标准支持什么

HTTP语义RFC 9110第13.1.1节说明If-Match的强比较及防丢失更新用途,核对日期为2026年10月16日。旧前置条件不满足时不能执行该变更,下例采用412响应。ETag不自动等于人工版本号或审批结论。

双编辑者轨迹

合成例子:两人都读取版本7及强校验值"r7"。A修改安装说明并保存为版本8;B仍持有版本7,随后提交另一处修改。

窄屏可横向滚动查看完整表格。

操作当前校验值提交的If-Match预期结果
A保存版本8"r7""r7"200,当前变为8
B保存旧内容"r8""r7"412,保留版本8
B重读并审查合并"r8""r8"200,新保存可变为9
弱校验对照W/"r8"W/"r8"不构成强匹配,不执行
未提交校验值"r8"缺失模型之外,需明确规则

客户应看到怎样的处理

系统应保留B未保存的草稿,说明有较新版本,并提供审查、重读或受控合并入口,不能静默覆盖8,也不能直接丢掉B的工作。供应方若用版本ID而非HTTP校验值,应演示等价的原子比较。

验收顺序

  1. 在两个隔离编辑会话中打开同一测试记录。
  2. A先保存,再尝试B的旧版本保存。
  3. 检查服务端仍保留A的内容,B仍有可检查草稿。
  4. 审查后有意提交合并版本,再测试真正同时到达的两次保存。

保留哪些证据

记录对象ID、预期版本或强校验值、当前版本、响应状态及保存后内容hash。此例中,冲突是正确保护结果;只有提示框截图、没有最终存储内容,不足以证明避免覆盖。

边界

下载函数只是完全匹配教学模型,不是HTTP服务器、合并引擎或备份系统;不覆盖重复成功请求、权限、缓存、审批和恢复。生产使用前需服务端核验,不对任何具体CMS或既有MadRaven页面作通过声明。

复核本页教学例子

以下文件可在本地离线复核,只模拟本页说明的情况,不代表真实平台集成。 已填写输入及预期结果 · 可检查的教学函数

把两份文件存入同一文件夹,使用Node 22.13或更新版本运行:

node decision-check.mjs cms-stale-save-contract.json