Ускорение Typeahead в Twitter Bootstrap для объекта JSON

Итак, я запускаю веб-приложение со словарем, используя 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 не занимает много времени, а поиск молниеносно работает, пока работает автозаполнение.

Итак, что вы, ребята, думаете о моих изложенных выше идеях? Есть ли у вас другие предложения?

Большое спасибо за помощь.


person DudeGuy    schedule 03.01.2013    source источник


Ответы (1)


Возможно, ваш внутренний скрипт обрабатывает входной запрос и возвращает более короткий список данных.

Когда начальная загрузка передает входные данные запроса, код сервера может возвращать более короткий список на основе полученных на данный момент входных данных.

person Bahl    schedule 01.02.2013