如何避免用户点击过快生成多个订单

用户点击按钮过快会生成多个订单 如何避免这种操作


回答:

这种是比较经典的幂等性问题,网上可以查到各种各样的解决方案,这里提供一下我自己的思路

  1. 订单id由前端进行生成
  2. 后端可以设置多重屏障防止重复提交
  3. 第一道屏障:可以通过redis等缓存服务缓存该订单id,且对应的过期时间为1秒,当在1秒内接收到的同一个订单id的请求视为相同请求,直接返回"请勿点击过快"等提示信息
  4. 第二道屏障:在mysql等关系型数据库中设置主键/唯一键,订单id不允许重复插入


回答:

提供两种方法:

  • 按钮点击后,加入 loading 效果,提交之后进入成功或失败环节
  • 前端表单增加 requestId,服务端检查,同一 id 不能多次提交


回答:

  • 纯前端方案:

    • 用户点击后,里面跳转。不给多次点击的机会。防抖节流标配
  • 后端方案:

    • 做分布式锁。根据 hash(userId + 接口 + 参数) 做为key,短时间限制并发数
  • 前后端方案:

    • 每次页面加载表单时,请求后端获取token,该token仅能使用一次。防止同一表单多次提交

以上是 如何避免用户点击过快生成多个订单 的全部内容, 来源链接: utcz.com/p/944553.html

回到顶部