如何实现NodeJs防怎么防止重复提交交

防抖:一段时间完成一个操作;

1、seach搜索联想用户在不断输入输入值时,用防抖来节约请求资源
2、windows触发resize的时候,不断的调整浏览器窗口大小会不断的触发这个事件用防抖来让其只触发这一次。
1、鼠标不断点击触发mousedown(单位时间内只触发一次)。
2、监听滚动事件比如是否滑到底部自动加载更多,用throttle

在登录页面html中写如下代码

重点是這个JS语句 定义了一个方法 共用一个Flag标记 进行验证 如果已经提交过就返回一个false给onsubmit这个数据

如果没有提交过 将标记设置为true 并且返回一个ture 给onsubmit 让其提交一次数据 这是js防止表单怎么防止重复提交交 应对的是传输数据

时网络延时 而用户多次提交数据 造成的问题

当然还有一种思路 可以设置提交按钮在提交一次之后不可用 也就是变为灰色 那么该怎么做勒

当然这种方式只能做到提交 并且按钮不可用 但是无法防止比如用户修改提交页面 或者用户刷新 或者后退等重复操作

只能做到减少服务器接受数据并检查的频率 但是这样依旧有利于减少服务器的工作量

在不改写这个module(以下简称rl)的前提下会有几个问题:

  1. 首先,看源码rl将req.ip存放在一个全局变量中,当使用nginx做反向代理的时候所有的req.ip会指向nginx的代理ip地址,所以这个rl在生产仩应该会变现出ip重复问题
  2. 其次max限制次数的逻辑问题,当设置max大于1之后次数越多,请求的延迟时间越长找到一个解决方法是设置【delayMs:0】

我要回帖

更多关于 防重复提交 的文章

 

随机推荐