【问题标题】:How to limit AJAX requests per custom time如何限制每个自定义时间的 AJAX 请求
【发布时间】:2012-04-27 12:58:43
【问题描述】:
如果我有一个搜索框,它会为每个 keyup 事件加载建议。我认为对于我的服务器来说,响应每个 keyup 事件的每个请求会变得最糟糕,这可能在一秒钟或更长时间内大约 10 次。我的意思是应该有一些 AJAX 请求限制功能来限制每秒或任何特定时间的请求。能否通过编码示例告诉我如何限制 ajax 请求?
第二件事,如果我们使用 JSP 来限制 AJAX 请求,我想分享一下。将 JSP 用作客户端语言是否是个好主意,并且恶意用户可以轻松删除那些 ajax-request-limiting 函数并破坏服务器。
或者!有什么补救办法吗?
感谢阅读。
【问题讨论】:
标签:
javascript
ajax
jsp
request
limit
【解决方案1】:
你可以自己写一个去抖方法:
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);
或者你可以使用underscore来限制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);
【解决方案2】:
您需要设置一个计时器,该计时器将在每次发生关键事件时重置。如果在计时器结束之前没有按下任何键,则发送您的 ajax 请求。