如何限制ajax请求?

时间:2013-06-12 18:39:04

标签: javascript

我的用户界面目前已大开。

特别是,有一些元素,每个元素都可以由用户单独删除。如果用户反复点击删除按钮,将重复触发ajax请求。

速率限制是我应该实施的标准做法还是可以让用户对此进行全开放访问?

2 个答案:

答案 0 :(得分:3)

您可以将用户请求分组到队列中。然后,不时检查该队列是否有新的请求发送。 因此,用户界面将追加要执行的操作,您将能够控制发送它们的频率。如果操作已经在队列中,则可以阻止附加操作。 此外,通过这种方式,您可以修改代码以接受要执行的操作列表。

这是一般性描述,可以使用setTimeout等函数在JavaScript中实现。

答案 1 :(得分:2)

首先,这是部分客户端问题,部分服务器问题。一些标准解决方案是:

  • 调整界面以不允许用户过于频繁地提交特定操作(在JS中执行,例如禁用abili提交删除一件事两次的请求),
  • 服务器上的速率限制通常不是必需的,但可能很有用,

以StackOverflow为例:当你对某个答案进行投票时,你无法再次进行投票,当你是这样的时候。提交评论,您需要在提交之间等待几秒钟。

就错误而言......您可能会遇到几类问题之一。例如:

  • 连接问题(缺少连接,连接不稳定或连接速度很慢),
  • 内部客户端限制(例如并发请求数已达到允许的最大值),
  • 其他,服务器端限制(速率限制,请求互相阻塞等),