Итак, у меня есть страница с таким раскрывающимся списком:


Код, который увлажняет этот выпадающий список:
Submission.cached_tag_counts.count
Dalli::Server#connect 127.0.0.1:11211
=> 23447
Submission.tag_counts.order('name ASC').map { |t| [t.name, t.name] }.count
=> 23447
и сам выпадающий список:

Сам запрос не плохой ... но проблема в том, что я пытаюсь заполнить выпадающий список 23447 записями? Это слишком много для браузера? Я подозреваю, что браузер является узким местом ... но как я могу определить, является ли браузер медленным? Сетевой вызов совсем не кажется плохим ... но как только я нажимаю на выпадающее меню, страница браузера немного зависает. Какой предел? Означает ли это, что выпадающий список, вероятно, является неправильным способом решения этой проблемы?
Что делать, если мне нужна функциональность, которая помогает пользователю автоматически завершать свой запрос, что не сильно замедляет эту страницу. Что я могу сделать?