爱生活,爱技术.Net之家首页
.Net之家
.Net技术交流,尽享编程之美
    个人资料
    我有我在
    我有我在
    • 访问:4次
    • 积分:218分
    • 级别:初级程序员
    • 登陆次数:28次
    • 注册时间:01月09日 12:33
    • 最近登录:02月22日 11:30

降低即时搜索的服务器压力

标签: 即时搜索 onkeyup 服务器 阅读人次:187 评论(0) 推荐()

在做即时搜索(就是像百度搜索输入文本框内容的时候自动搜索出类似的信息)的时候一般都是点击键盘触发搜索事件 一般用onkeydowm或onkeyup (也许onpropertychange是很好的,但可惜在ff和chorme下是不支持的)这样每次点击键盘就会搜索 如果有很多用户的情况下,那么服务器的压力是很大的 怎么办 只能减少提交搜索次数解决了下面这两个方法是文本框每次onkeyup的触发事件---Str是搜索关键字
AjaxSearch: function (Str) {
            if (Str.trim() == "") { return false; }
            if (NetHome.PostMessage.posting == false) {
                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的第一个参数(待执行的代码)要当作字符串输入 并且代执行的代码
如果是有参数的方法  那么参数必须是全局变量(至少不能是在这个方法中定义的变量)

查看评论
暂没有相关内容~
发表评论
  • 评论内容:
.Net之家 豫ICP备12000498号 | 百度统计 | QQ群(.Net之家交流):110459570