Слишком много запросов к серверу с использованием функции автозаполнения jquery

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

Я могу использовать это без AJAX.

$( function() {
var availableTags = [
"ActionScript",
"AppleScript",
"Asp",
"BASIC",
"C",
"C++"];
$( "#tags" ).autocomplete({
source: availableTags
});
} );

Но если у меня есть тысячи товаров, это также повлияет на скорость работы сервера и веб-сайта?

Можно ли вначале извлечь все записи и поместить их в отдельный файл, а затем выполнить поиск в нем, чтобы сделать веб-сайт более быстрым и снизить нагрузку на сервер?

0

Решение

Если у вас есть тысячи записей, конечно, вам нужно будет использовать ajax, в противном случае вы будете загружать много данных на стороне клиента, предоставляя всю информацию кому-то, кто хочет ее украсть, а также замедляя загрузку страницы.

Есть два способа уменьшить количество запросов:

Debounce — это просто таймер, который ждет X миллисекунд перед выполнением запроса. Если пользователь что-то набирает до окончания таймера, вы отменяете его и запускаете другое.

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

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

нижняя сторона: Это только уменьшает нагрузку на сервер, если пользователь печатает быстрее, чем время отклика сервера.

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

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector