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);
}
Это называется "сбросом" ввода (от аппаратного обеспечения, связанного с механическим и электрическим "отскакиванием" клавиши при ее нажатии).