4

我的用户界面目前是敞开的。

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

速率限制是我应该实施的标准做法,还是可以让用户广泛开放访问?

4

2 回答 2

3

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

这是一个通用描述,可以在 JavaScript 中使用诸如setTimeout.

于 2013-06-12T18:44:33.497 回答
2

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

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

以 StackOverflow 为例:当您对答案投反对票时,您将无法再次对其投反对票,而当您投反对票时。提交评论,您需要在提交之间等待几秒钟。

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

  • 连接问题(缺少连接、不稳定的连接或非常慢的连接),
  • 内部客户端限制(如并发请求数已达到允许的最大值),
  • 其他,服务器端限制(速率限制,请求相互阻塞等),
于 2013-06-12T18:44:04.470 回答