[转载]降低即时搜索的服务器压力

[转载]降低即时搜索的服务器压力 – 我有我在 – 博客园.

在做即时搜索(就是像百度搜索输入文本框内容的时候自动搜索出类似的信息)的时候一般都是点击键盘触发搜索事件 一般用onkeydowm或onkeyup (也许onpropertychange是很好的,但可惜在ff和chorme下是不支持的)这样每次点击键盘就会搜索 如果有很多用户的情况下,那么服务器的压力是很大的 怎么办 只能减少提交搜索次数解决了下面这两个方法是文本框每次onkeyup的触发事件—Str是搜索关键字
AjaxSearch: function (Str) {
if (Str.trim() == “”) { return false; }
if (NetHome.PostMessage.posting == false) {     //NetHome.PostMessage.posting 一个判断是否在提交中的变量
NetHome.PostMessage.posting = true;
setTimeout(“NetHome.Utility.AjaxSearching()”, 1000);
}
},
AjaxSearching: function () {
var Str = $(‘#searchtxt’).val().trim();//文本框的值
$.post(“/Ajax/AjaxSearch”, { SearchKey: Str }, function (Msg) {
//处理展示搜索内容的代码
}
NetHome.PostMessage.posting = false;
});
},

这样的效果就是 第一次触发提交事件的一秒后才执行提交搜索 搜索的关键字也是一秒后输入的关键字 并且在一次提交过程中,不会再接受其他提交事件  从而大大降低每次点击键盘都提交给服务器带来的压力

注意:setTimeout的第一个参数(待执行的代码)要当作字符串输入 并且代执行的代码
如果是有参数的方法  那么参数必须是全局变量(至少不能是在这个方法中定义的变量)

示例页面

赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏