如何限制每个自定义时间的 AJAX 请求

How to limit AJAX requests per custom time

本文关键字:AJAX 请求 时间 自定义 何限制      更新时间:2023-09-26

如果我有一个搜索框,可以加载每个keyup事件的建议。我认为对我的服务器来说,在每个 keyup 事件上响应每个请求会变得最糟糕,这可能是一秒或更长时间的 10 次左右。我的意思是应该有一些 AJAX 请求限制函数来限制每秒或任何特定时间的请求。你能通过编码示例告诉我如何限制 ajax 请求吗?

第二件事,我想分享一下,如果我们使用 JSP 来限制 AJAX 请求。将JSP作为客户端语言是一个好主意,恶意用户可以轻松删除那些ajax请求限制函数并破坏服务器。

或!有什么补救措施吗?

感谢您的阅读。

你可以自己写一个去抖方法:

var timer = null;
searchInput.addEventListener('keyup', function (evt) {
    clearTimeout(timer);
    timer = setTimeout(function () {
        // this event listener will postpone its execution until after 1 second have elapsed since the last time it was invoked
        // send your ajax request here
    }, 1000);
}, false);

或者,您可以使用下划线来限制键控事件:

searchInput.addEventListener('keyup', _.debounce(function (evt) {
    // this event listener will postpone its execution until after 1 second have elapsed since the last time it was invoked
}, 1000), false);

您需要设置一个计时器,该计时器将在每次发生密钥事件时重置。 如果在计时器关闭之前没有按下任何键,则发送您的 AJAX 请求。