Вы говорите в комментариях, что это небольшой набор данных ключевых слов. Таким образом, может быть целесообразным, чтобы клиент запрашивал весь список, как только пользователь начинает вводить данные в поле, а затем должен JavaScript реагировать на изменения в пользовательском вводе на стороне клиента.
Это одно попадание сервера на поле на страницу (и только в том случае, если пользователь вводит данные в поле), и вы можете кэшировать его на сервере, чтобы ему редко приходилось попадать в БД.
Редактировать: Кэширование на сервере - большая победа, потому что список одинаков для каждого запроса и для всех пользователей, но даже лучше, это означает, что вы можете кэшировать список в браузере клиента, используя заголовок Expires
или Etag
с подходящим периодом в ответе. Таким образом, пользователь может получить неограниченное автозаполнение только для одного (хорошо кэшированного) попадания на сервер за весь период кеша браузера.