Итак, я запускаю веб-приложение со словарем, используя Typeahead от Twitter Bootstrap. Объект словаря огромен (5000 статей). Под моим текущим кодом
$('#dictionary').typeahead({source: function(query, process){
$.getJSON('dictionary.json', function(data){
dict = data;
var words = _.keys(dict);
process(words);
});
}, minLength: 2});
Я получаю каждый раз, когда осуществляется доступ к элементу typeahead (#dictionary). Несмотря на то, что это делает запрос очень быстрым, как только запись находится в поле поиска, ввод текста становится почти слишком медленным для работы, поскольку требуется вечность, чтобы получить словарь.json (1+ МБ) и проанализировать его.
Ясно, что эта стратегия неверна.
Вот что я думаю: 1. Поместите get в переменную предварительной загрузки и примите страницу, загруженную после загрузки Dictionary.json. 2. Создайте отдельный массив только со значениями ключей из Dictionary.json и предварительно загрузите этот массив через get (это будет еще меньше и быстрее).
Меня устраивает, что нагрузка занимает больше времени. Меня устраивает, что поиск занимает больше времени. Но то, что автозаполнение в typehead занимает много времени, не работает с точки зрения пользовательского интерфейса. Очевидно, что большие дети в Google и др. Для этого есть хитрость: предварительная загрузка Google не занимает много времени, а поиск молниеносно работает, пока работает автозаполнение.
Итак, что вы, ребята, думаете о моих изложенных выше идеях? Есть ли у вас другие предложения?
Большое спасибо за помощь.