Прежде всего, убедитесь, что ваши 20К-записи могут умещаться в 5 МБ хранилище в localStorage
.
Сейчас подходит к:
Я ищу руководство по его реализации, но в таком случае оно не может повлиять на производительность браузера при поиске или сортировке.
Первый подход: Для сортировки и поиска наилучшим вариантом (с точки зрения логики и производительности) было бы сохранение всех записей в одном строковом массиве JSON
в localStorage
, а затем используя .filter()
и .sort()
методы объекта Array
для их поиска и сортировки соответственно. Имейте в виду, что обход 20К записей может занять несколько секунд (1-4 секунды или около того, в зависимости от вычислительной мощности машины). Этот подход будет удобен, если вы хотите получить доступ и обработать все записи сразу.
Второй подход: Храните каждую запись индивидуально, используя некоторый вид первичного / уникального ключа для идентификации каждого из них. Затем по мере необходимости просто извлекайте нужную, как вы обычно выбираете любую пару ключ-значение из localStorage. Что касается поиска и сортировки, вы можете использовать Object.keys()
и Object.entries()
, чтобы довольно быстро получить все записи, а затем использовать те же методы .filter()
и .sort()
для поиска и сортировки, как указано в первом подходе.
Вам необязательно использовать базу данных indexeddb
или SQL
. Это достижимо при использовании localStorage
, просто это может быть применимо только для небольших записей и в сценариях, где масштабирование, скорее всего, никогда не произойдет.