1

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

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

或者 !有什么补救措施吗?

谢谢阅读。

4

2 回答 2

2

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

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);

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

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);
于 2012-04-27T15:22:33.647 回答
0

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

于 2012-04-27T13:45:34.767 回答