网络稍慢时用户连点提交,后台出现两条一模一样的申请记录。碰到这种情况,我一般先确认改动有没有真的生效。

原因不复杂,前端只做按钮禁用没有校验,后端也没有唯一约束或幂等键。

「表单重复提交」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。报错里带路径的,先去看那个路径在不在、权限对不对。

const token = crypto.randomUUID();
// 服务端
UNIQUE KEY uk_token (token)

同一份配置存在多处的,先确认改的是被加载的那一份。新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。

备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。接口问题先分清是没发出去、发出去了没收到,还是收到了处理失败。

偶发问题先统计频率,一小时几次和一天一次,查法完全不同。

具体做法是,提交后立即禁用按钮;生成一次性令牌随表单提交;服务端校验令牌并加唯一索引。

最后用这个标准收尾,重复提交只保留一条记录,用户看到同样的结果页。

作者 9823189