Вместо меня поражающий базу данных каждый раз, когда кто-то вводит символ в поле поиска, я хочу создать статические .js файлы.
Что является некоторыми методами, которые я могу использовать для создания статических .js файлов, которые являются в основном массивами для загрузки, jQuery автоматически заполняют плагин с.
Мой sku's продукта похож:
ABC1234
или
Alpha Beta C 1234
(abc является краткой формой для названия производителя, в то время как 'Альфа-Бета C' является подробной формой, сопровождаемой 3-4 числами).
Это отличный вариант использования JSON. Обозначение объекта Javascript. Вы можете просто включить файлы JS, и все ваши данные будут помещены в объекты.
var products = [{sku:'aaaa', price: 50}, {sku:'bbbb', price: 60}];
Пожалуйста, проверьте мой синтаксис, он по памяти.
Вы также можете отправить все оставшиеся возможности в JSON через AJAX вызов только после 2/3 нажатий клавиш и извлечь оставшиеся результаты из этого объекта/массива (я не знаю, поддерживает ли JQuery такое поведение). Это экономит пропускную способность, так как не вся ваша база данных должна быть отправлена клиенту, и вам не придется обращаться к базе данных более одного раза (как правило, если первые нажатия были правильными).
Я не уверен, что ваш вопрос также связан с серверной стороной (и какую серверную технологию вы используете), поэтому просто к вашему сведению, посмотрите функции JSON в PHP (особенно json_encode), чтобы прочитать больше об этом.
Вы можете построить минимизированный конечный автомат (например, DAWG), который содержит конечные узлы для всех ваших существующих кодов продуктов. Затем сохраните это в некотором оптимизированном формате в строке Javascript (или небольшом количестве строк).
Эти строки затем могут быть отправлены в сжатом виде в браузер, вероятно, загрузка не займет много времени.
Затем вы можете пройти по конечному автомату в зависимости от количества уже набранных символов и эффективно найти все коды продуктов, которые начинаются с этих символов.
Я бы так и поступил.
Или можно просто загрузить весь словарь, потому что 20k - это не так уж и много. Я написал игру на Javascript, которая загружала словарь большего размера, и это не было настоящей проблемой.