JSON против нескольких соединений

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

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

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

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

1 ответ

Решение

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

Не существует единого решения для всех, оно зависит от данных.

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

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

Например, скажем, ваш триггер поиска 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);
}

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

Другие вопросы по тегам