【问题标题】:Strategies for auto completing a text box with ajax使用 ajax 自动完成文本框的策略
【发布时间】:2009-07-01 01:02:06
【问题描述】:

youtube、google、facebook 甚至 Stackoverflow 如何通过他们的自动完成框实现出色的性能?它真的很快,感觉就像是本地搜索,即使在后台他们可能正在调用数据库。 (想象一下数据库调用所需的所有资源!)

仅仅是服务器和带宽的问题吗?

使用这种技术最大化性能的策略是什么?寻找诸如
之类的回答者 1) 在用户输入至少 3 个字母后启动 ajax 回调
2)缓存数据库结果?如果有怎么办?
3)预加载数据?如果是这样
4) 等等...

如果我使用带有 sql server 2008 的 asp.net mvc 很重要。

【问题讨论】:

    标签: jquery ajax autocomplete


    【解决方案1】:

    一些查询自然会变得更快(并且可以使用客户端缓存)。这适用于任何查询,其中随着“关键字”的增长,结果始终是先前结果的子集。

    例如假设您正在寻找要发送电子邮件的联系人...(共 8,000 个联系人)

    Typed   | Results | Search | Cached?
      "j"   |  2,500  | server | server
      "je"  |    847  | server | server (+ client?)
      "jef" |    192  | server | server + client
      "jeff"|     23  | client | client
    

    您必须确定缓存结果的最佳时间/地点,但是一旦您拥有“小”集(例如少于 250 个),您不妨在客户端上搜索缓存。

    【讨论】:

      【解决方案2】:

      尝试使用 Firebug 来查看 google 回调会发生什么,这令人印象深刻且易于解释。

      【讨论】:

        【解决方案3】:

        仅将它用于您可以缓存的查询(查找可用于服务器端语言/架构和数据库的数据库缓存技术(例如 memcached)...没有任何使用 MS 技术的经验)并且速度很快(例如,在搜索文章时只搜索标题而不是整个文本......这就是高级搜索的目的)。如果可能的话,您也应该针对这些调用优化您的数据库(索引)。当然要限制结果(我的猜测是传输所有数据(请求响应)的时间比数据库查询本身要长)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-05-08
          • 2018-04-03
          相关资源
          最近更新 更多