2014-08-30 3 views
0

В настоящее время я создаю сайт, который ищет внешнюю базу данных и создает записи, которые соответствуют данной строке поиска. Поиск выполняется в реальном времени, поэтому результаты отображаются по мере ввода пользователем.JSON vs multiple connections

Теперь первый (и текущий) подход, который я принял, заключается в том, что страница на самом деле подключается к серверу mySQL и извлекает контент через AJAX, с КАЖДОЙ буквой, которую пользователь вводит в поле поиска.

Теперь я начинаю смотреть объекты JSON (я только недавно начал создавать веб-сайты) и задавался вопросом, было бы хорошей идеей загрузить всю базу данных в объект JSON в начале, а затем просмотреть это при поиске.

это хорошая идея? было бы быстрее? заранее спасибо

+1

В качестве альтернативы вы можете часто искать и кэшировать слова. – techuser

ответ

2

Это полностью зависит от размера данных и сложности запроса. Если вы можете разумно отправить данные клиенту заранее, а затем искать его локально, то обязательно, это полезно, потому что оно все локально и у вас нет задержки на запрос сервера. Но если у вас большой объем данных или запрос сложный, вполне возможно, что имеет смысл делать запрос на сервере.

Существует не одноразовое решение, оно зависит от данных.

... и получает контент через AJAX, с КАЖДОЙ буквой пользователь вводит в поле поиска.

Это обычно излишний. Обычно вы хотите дождаться паузы в наборе пользователя перед отключением вызова ajax, чтобы, если они быстро набирают «james», вы ищете «james» вместо поиска «j», затем «ja» ", затем" jam ", затем" jame ", а затем" james ".

Например, предположим, что ваш поисковый запрос является событием keypress. Это было бы довольно общий подход:

var keypressTimer = 0; 
function handleKeypress() { 
    if (keypressTimer) { 
     cancelTimeout(keypressTimer); 
    } 
    keypressTimer = setTimeout(doSearch, 100); // 100ms = 1/10th of a second 
} 
function doSearch() { 
    var searchValue; 

    keypressTimer = 0; 
    searchValue = /*...get the search value...*/; 
    doAjaxCallUsing(searchValue); 
} 

Это называется «дребезгом» вход (от аппаратной техники, связанным с механическим и электрическим «прыгающим» ключом, как она нажата).

+1

извините, плохая формулировка с моей стороны, я действительно выполняю паузу с каждым нажатием клавиши, чтобы на самом деле ждать, когда пользователь перестанет печатать :) спасибо за вклад в json vs ajax, я могу просто дать ему снимок, чтобы я мог научиться больше об объектах json. ура! –

 Смежные вопросы

  • Нет связанных вопросов^_^