Поисковые запросы, как правило, довольно малы, поэтому увеличение нагрузки на сервер может быть не таким значительным, как вы думаете. Отправка запроса на каждое нажатие клавиши должна выполняться, если вы сохраняете ограничение длины запросов.
В любом случае, это сервер, который знает, как он загружен, поэтому место для размещения управления нагрузкой находится на стороне сервера. Например, вы можете следовать стратегии, например, такой:
На клиенте:
- Когда текст поиска изменится, отправьте его на сервер.
- Когда сервер отправляет некоторые результаты, обновите страницу.
На сервере при получении запроса от клиента:
- Если я уже обрабатываю запрос от этого клиента, отмените старый запрос.
- Если у меня есть запрос от этого клиента в очереди, откажитесь от него.
- Добавить новый запрос в очередь ожидающих поисковых запросов, если очередь не заполнена.