Агрессивное кэширование JSON будет работать для этого, вы просто хешируете файл JS и добавляете его в конец URL-адреса, чтобы обновить его при изменении. Одна ревизия может выглядеть так:
/media/js/ac.js?1234ABCD
А когда файл меняется, хеш меняется.
/media/js/ac.js?4321DCBA
Таким образом, когда клиент загружает страницу, ваш серверный код ссылается на хешированный URL, и клиент получит ответ 304 Not Modified при следующей загрузке страницы (при условии, что это включено на вашем сервере). Если вы используете этот метод, вы должны установить, чтобы файлы никогда не истекали, так как часть «expiring» будет обрабатываться хешем, т. Е. Когда истекает срок действия файла JS , хеш изменяется и клиент не получит 304, а скорее 200.
ac.js может содержать список или другую итерацию, которую ваш код автозаполнения может проанализировать как пул завершения, и вы получите к нему доступ, как и к любой другой переменной JS.
На практике, однако, это не должно быть необходимым для большинства проектов. Использование чего-то вроде серверной памяти memcached и сжатия gzip сделает файл небольшим и удивительно быстрым для загрузки. Если список ОГРОМНЫЙ (скажем, тысячи тысяч предметов), вы можете рассмотреть это.