如何避免用户点击过快生成多个订单
用户点击按钮过快会生成多个订单 如何避免这种操作
回答:
这种是比较经典的幂等性
问题,网上可以查到各种各样的解决方案,这里提供一下我自己的思路
- 订单id由前端进行生成
- 后端可以设置
多重屏障
来防止重复提交
- 第一道屏障:可以通过redis等缓存服务
缓存该订单id
,且对应的过期时间
为1秒,当在1秒内接收到的同一个订单id的请求视为相同请求
,直接返回"请勿点击过快"等提示信息 - 第二道屏障:在mysql等关系型数据库中设置
主键/唯一键
,订单id不允许重复插入
回答:
提供两种方法:
- 按钮点击后,加入 loading 效果,提交之后进入成功或失败环节
- 前端表单增加 requestId,服务端检查,同一 id 不能多次提交
回答:
纯前端方案:
- 用户点击后,里面跳转。不给多次点击的机会。防抖节流标配
后端方案:
- 做分布式锁。根据 hash(userId + 接口 + 参数) 做为key,短时间限制并发数
前后端方案:
- 每次页面加载表单时,请求后端获取token,该token仅能使用一次。防止同一表单多次提交
以上是 如何避免用户点击过快生成多个订单 的全部内容, 来源链接: utcz.com/p/944553.html