缓慢加载jQuery自动完成

时间:2010-04-09 16:20:11

标签: jquery autocomplete

您好我正在使用jQuery的autocomplete为我的公司构建一个内部应用程序,并且发现它往往很慢。我的假设是瓶颈可能是将其元素添加到DOM中,因为在第一次查询之后它似乎更快。有没有人知道在页面加载时预先加载这些元素的方法,而不是在用户开始输入时第一次这样做?

2 个答案:

答案 0 :(得分:1)

如果您不必使用ajax调用来检索数据,并且您的自动完成列表不是太大,您可以从js对象数组中提供自动完成数据。

让我们假设你有这样的数据(你可以尽早建立/可以):

var data = [{"n":name, "p":pagename,"c":number_of_results},...];

然后自动完成调用将会显示:

$("#autocomplete").autocomplete(data, {
    matchContains: true,
    formatItem: function(row, i, max) {
        return row.n + " ("+row.c+")";
    },
    formatMatch: function(row, i, max) {
        return row.n;
    },
    formatResult: function(row) {
        return row.n;
    }

});
$("#autocomplete").result(function(event, data, formatted) {
    if(!data) {
        alert("Please select an item");
    } else {
        window.location.href =  data.p;
    }
});

这将创建一个类似item name (number of results)的自动填充功能,点击某个项目时,它会重定向到相应的商品页面名称。

我有大约1,000件商品,自动完成速度是即时的。

答案 1 :(得分:0)

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

不要使用PHP / SQL。我的自动完成在C ++上编写,并使用哈希表进行查找。 请参见效果here

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

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

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