用户没看见结果再次提交,可能是一次请求重试,也可能确实新增需求。唐山企业设计外贸网站表单时,应先约定业务含义,再考虑前端提示和服务端处理。本文是一份技术方案讨论,不代表当前网站已采用任何特定去重实现。
先定义什么叫同一次提交
| 情况 | 要判断的关系 | 不宜直接处理 |
|---|---|---|
| 网络异常后重试 | 是否仍是同一请求 | 重复创建多条相同记录 |
| 用户重新提出需求 | 是否属于新任务 | 仅因联系方式相同就丢弃 |
| 同时到达的请求 | 保存是否存在竞争 | 只在页面禁用按钮 |
| 保存成功但响应丢失 | 如何返回已有结果 | 提示失败后让人重新填全部资料 |
前端可以显示提交中和清楚反馈,但不能单独承担一致性。页面刷新、多标签或重复请求可能绕过一次按钮状态,服务端需要按实际系统设计。去重也不能只靠全文完全相同就永久忽略,业务人员仍需区分真实追加与技术重试。
概念流程要有失败出口
1准备为一次提交建立受控标识,确认有效范围。
2处理校验输入并在适当一致性边界中检查与保存。
3重试相同有效标识返回对应状态,不重复新增。
4新需求按明确业务规则建立新任务,不误删追加内容。
设计核对单
一次提交的定义:
标识生成与有效范围:
并发时的一致性安排:
保存结果与响应关系:
失败后允许的重试:
不同内容使用相同标识怎样处理:
异常和人工处理路径:验收不只点击一次成功
- 相同有效请求重复到达。
- 两个请求几乎同时到达。
- 保存前失败与保存后响应异常。
- 用户确实提出不同内容的新需求。
测试使用专用资料,不重复联系真实客户。记录保存数量、状态和显示反馈,避免只凭前端动画判断。服务端输入校验、访问控制和业务范围仍需独立处理;一个防重复键不能替代这些能力,也不应公开泄露其他人的提交结果。
只把按钮灰掉够不够?
不够作为服务端一致性的证明,需要按真实重试与并发情况验证。
同一联系人一天只能提交一次更简单吗?
可能误伤真实追加,应按业务需要与技术风险设计,不能为了省事静默丢需求。