在JSON对象上加速Twitter Bootstrap的Typeahead

时间:2013-01-03 08:59:40

标签: jquery twitter-bootstrap autocomplete

所以,我正在使用Twitter Bootstrap的Typeahead启动字典Web应用程序。字典对象是巨大的(5000个条目)。根据我目前的代码

$('#dictionary').typeahead({source: function(query, process){

    $.getJSON('dictionary.json', function(data){
        dict = data;
        var words = _.keys(dict);
        process(words);
    });

}, minLength: 2});

每次访问typeahead元素(#dictionary)时我都会得到。虽然这样一旦条目在搜索框中就会使查询变得非常快,但它使得typeahead几乎无法工作,因为它需要永远获取dictionary.json(1+ MB)并解析它。

显然这种策略是错误的。

这就是我的想法: 1.将get加入预加载变量并在加载了dictionary.json后接受加载的页面。 2.使用dictionary.json中的键值创建一个单独的数组,并通过get预加载此数组(这将更小更快)。

我很好,负载时间更长。我很好,搜索时间更长。但是从UI的角度来看,在typeahead中使用自动完成需要很长时间是不可行的。显然是google等人的大孩子。有一个技巧:谷歌预加载不需要太长时间,并且自动完成工作时搜索速度非常快。

那么,你们怎么看待我上面提出的想法? 你还有其他建议吗?

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

也许让你的后端脚本处理输入查询并返回一个较短的数据列表。

使用bootstrap传递查询输入,服务器代码可以根据到目前为止收到的输入返回一个较短的列表。