Сильно ли нагружает ajax поиск сервер и какие есть аналоги?
Привет!
Необходимо на сайте сделать поиск в реальном времени, т.е. вводишь в него от 2 букв и выше, и посылается аякс запрос, далее поиск выполняется по БД, возвращаются результаты, содержащие эти 2 буквы. Далее юзер вводит третью-четвертую и так далее. С каждой буквой ситуация повторяется, пока не появятся результаты, необходимые юзеру.
Понятно, что грамотно ответить на вопрос сильно ли нагружает сервер без данных сервера, таблицы бд, типа поиска - нельзя. Но все же в теории сильно ведь грузит, особенно если учесть, что за раз может по 50-100 человек пользоваться поиском, создавая каждый десяток аякс запросов. И какой аналог есть у такого поиска? Но обязательно, чтобы также с вводом каждой буквы выпадали результаты, все больше похожие на то, что юзер ищет.
однозначных решений нет. есть:
- делегирование: сервисы типа algolia. в минусах - платность, хотя при определенных условиях может быть и бесплатно.
- горячий кэш на быстрых хранилищах. в минусах - необходимость определения что чаще ищут, хотя иногда можно и чуть ли не все туда воткнуть.
- обычный поиск.
в реальности: 50-100 человек отправляющих одновременно запросы - не проблема для любого современного сервера. конечно, если код не писали распоследние слоупоки.
Нагрузка будет зависит от алгоритмов и ПО которое вы используете. Так что на счёт нагрузки, как вы заметили, сложно дать однозначный ответ.
Необходимо правильно написать алгоритм для поиска. Желательно хотя бы 3-4 буквы начал искать. Это зависит от ваших потребностей. Так же нужно сделать так, что бы пользователь сначала ввёл нужные данные (буквы), и только с небольшой задержкой начался поиск.
Так же есть специальные модули/движки (называют по разному) для поиска (сфинкс и т.п.) (В этом не шарю). Которые оптимизированы под такие задачи.
edward_freedom, логично предположить что на большом объеме данных по первым 1-3 буквам будет слишком много результатов, среди которых либо все равно долго искать нужное, либо надо ограничивать выборку, и в нее с большой вероятностью просто не попадут нужные пользователю элементы. По этому подсказка с 1 буквы имеет смысл только для небольшого объема выборок. Кроме того, это настраивается 2 строчками скрипта.