Я работаю над проектом с использованием ReactionJS и Java. Мы хотим создать функцию typeahead, которая будет возвращать список совпадающих имен клиентов. Есть 10K клиентов.

Как я могу реализовать функциональность? Должен ли я сделать это на стороне сервера или на стороне браузера?

Любая помощь приветствуется.

Это действительно зависит от ваших приоритетов.

TL / DR: делайте это на сервере, если вам действительно не нужны немедленные ответы или вы планируете выполнять много таких запросов.

Длинный (er) ответ:

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

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

Другой аспект, если вы действительно хотите хранить определенную информацию полностью локально. Информация о клиенте звучит как то, что лучше разместить на сервере.

Что вы можете сделать, это начать ввод текста только после того, как наберется 2-3 символа, а затем вернуть все имена для этого выбора. Предполагая, что ваше среднее имя клиента составляет ~ 15 символов, и вы получите максимум, скажем, 200-300 имен клиентов, тогда ваш несжатый ответ должен быть ниже 5 КБ. Должно быть управляемым. Это также имеет дополнительное преимущество, заключающееся в быстром поддержании функции локального фильтра заголовка (что может быть важно, если вы хотите поддерживать мобильные устройства).