所以,我正在使用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等人的大孩子。有一个技巧:谷歌预加载不需要太长时间,并且自动完成工作时搜索速度非常快。
那么,你们怎么看待我上面提出的想法? 你还有其他建议吗?
非常感谢你的帮助。
答案 0 :(得分:0)
也许让你的后端脚本处理输入查询并返回一个较短的数据列表。
使用bootstrap传递查询输入,服务器代码可以根据到目前为止收到的输入返回一个较短的列表。