我的用户界面目前是完全开放的。 特别地,有一些元素,每个元素都可以被用户单独删除。如果用户重复点击删除按钮,将会不断触发ajax请求。 限制访问速率是一个标准做法吗?我是否应该实施这样的措施,或者允许用户完全开放访问呢?
你可以将用户请求分组放入队列中。然后,定期检查该队列是否有新请求需要发送。 因此,用户界面将追加要执行的操作,您将能够控制发送它们的频率。如果该操作已经在队列中,则可以防止追加操作。 此外,这种方式还可以修改代码以接受要执行的操作列表。这是一个通用描述,可使用JavaScript函数(如setTimeout)实现。
首先,这个问题有一部分是客户端问题,另一部分是服务器问题。一些标准解决方案包括: 调整界面,不允许用户过于频繁地提交某些操作(例如,使用JS禁用重复提交请求), 通常情况下不需要在服务器上实现速率限制,但这也可能会有所帮助, 以StackOverflow为例:当你踩了一个答案之后,就不能再次踩它;当你提交评论时,需要在每次提交之间等待几秒钟。至于错误方面...你可能会遇到以下几类问题之一。例如: 连接问题(缺乏连接、不稳定的连接或非常缓慢的连接), 内部客户端限制(例如,同时发出的请求数量已达到最大允许值), 其他服务器端限制(速率限制、请求相互阻塞等)。