如何提高Jquery自动完成的性能

Bjö*_*örn 47 javascript jquery autocomplete

我计划对网站使用jquery自动完成功能,并已实现测试版本.我现在使用ajax调用来检索每个字符输入的新字符串列表.问题是它在填充新列表之前1.5秒变得相当慢.快速自动完成的最佳方法是什么?我正在使用cakephp,只是做了一个发现,并限制了10个项目.

cll*_*pse 54

这篇文章 - 关于flickr如何自动完成是一个非常好的阅读.我有一些阅读它的"哇"经历.

"这个小部件在不到200毫秒的时间内以JavaScript的形式下载所有联系人的列表(即使对于拥有10,000多个联系人的成员也是如此).为了获得这种性能水平,我们必须彻底重新思考我们如何从服务器到客户端."


Dar*_*ato 38

尝试预加载列表对象,而不是动态执行查询.

此外,自动完成默认情况下有300毫秒的延迟.
也许消除延迟

$( ".selector" ).autocomplete({ delay: 0 });
Run Code Online (Sandbox Code Playgroud)


Bur*_*gan 11

1.5秒间隔是非常宽的间隙,以提供自动完成服务.

  1. 首先优化查询和数据库连接.尝试使用内存缓存使数据库连接保持活动状态.
  2. 如果您的服务被高度用于忽略重新获取,请使用结果缓存方法.
  3. 使用客户端缓存(JS列表)来保留客户端上的旧请求.如果用户输入并删除,它将是有用的.结果将来自前端缓存而不是后端点.
  4. 在客户端进行正则表达式过滤不会很昂贵,您可以给它一个机会.


Gum*_*mbo 5

在做一些优化之前,你应该首先分析瓶颈的位置.尝试找出每个步骤(输入→请求→数据库查询→响应→显示)需要多长时间.也许CakePHP实现延迟不发送输入的每个字符的请求.


ole*_*rch 5

PHP/SQL 上的服务器端很慢。

不要使用 PHP/SQL。我的自动完成用 C++ 编写,并使用哈希表进行查找。在此处查看性能。

这是 Celeron-300 计算机、FreeBSD、Apache/FastCGI。

而且,你看,在巨大的字典上运行得很快。10,000,000 条记录不是问题。

此外,支持优先级、动态翻译和其他功能。