两位员工同时打开同一份规格内容,可能在不知情时互相覆盖。如果系统没有检查编辑起点的版本,“保存成功”提示就无法证明交付可靠。本文帮助企业在采购共享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校验值,应演示等价的原子比较。
验收顺序
- 在两个隔离编辑会话中打开同一测试记录。
- A先保存,再尝试B的旧版本保存。
- 检查服务端仍保留A的内容,B仍有可检查草稿。
- 审查后有意提交合并版本,再测试真正同时到达的两次保存。
保留哪些证据
记录对象ID、预期版本或强校验值、当前版本、响应状态及保存后内容hash。此例中,冲突是正确保护结果;只有提示框截图、没有最终存储内容,不足以证明避免覆盖。
边界
下载函数只是完全匹配教学模型,不是HTTP服务器、合并引擎或备份系统;不覆盖重复成功请求、权限、缓存、审批和恢复。生产使用前需服务端核验,不对任何具体CMS或既有MadRaven页面作通过声明。
复核本页教学例子
以下文件可在本地离线复核,只模拟本页说明的情况,不代表真实平台集成。 已填写输入及预期结果 · 可检查的教学函数
把两份文件存入同一文件夹,使用Node 22.13或更新版本运行:
node decision-check.mjs cms-stale-save-contract.json