Надстройка Firefox: как лучше всего хранить массив, который изменяется с течением времени? - PullRequest
0 голосов
/ 06 мая 2020

У меня есть надстройка Firefox, которая должна сохранять массив строк.

Строки - это простые строки - точнее имена файлов, например:

11111.jpg
22222.gif
33333.jpg
44444.jpg
55555.png

Этот массив является динамическим c - мне нужно время от времени добавлять в него элементы, а также удалять некоторые.

Я привык к реляционным базам данных, с SQL запросами для выполнения операций с данными,
, но для надстройки Firefox кажется, что способ хранения данных использует пары ключ-значение.

Итак, для хранения моего (динамически растущего / сжимающегося) массива
делает это означает, что мне нужно сохранить весь массив как значение пары ключ-значение,
, а затем каждый раз, когда я хочу добавить / удалить элемент из этого массива, мне нужно:
1) Получить это Пара ключ-значение,
2) Отредактируйте массив (в памяти),
3) Сохраните все обратно в область хранения?

Нет лучшего способа, чем читать все, делать небольшое изменение, а затем снова сохранить все?

1 Ответ

2 голосов
/ 06 мая 2020

Хранение массива под одним ключом, его чтение, обновление, запись под одним и тем же ключом - единственный простой метод использования API хранилища расширений.

Если вы видите, что это заметно медленнее в Firefox профилировщик, вы можете реорганизовать данные, чтобы они хранились в меньших сегментах. Вы даже можете создать свою собственную сложную имитацию базы данных поверх API хранилища расширений, который будет хранить каждое значение отдельно и хранить ключ index, в котором перечислены все значения, поэтому вы можете выполнять только полное обновление этого индекса в дополнение к записи одного значения сам. Индекс может быть даже частями или использовать другие расширенные структуры. Возможно, существует даже существующая библиотека.

Вы можете использовать хранилище DOM, такое как IndexedDB, внутри фонового сценария (или любого другого сценария расширения, кроме сценариев содержимого), который предлагает некоторые из правильных функций БД, но он менее надежен, потому что многие пользователи: а) используют различные очистители, которые также очищают хранилище DOM внутри расширений, б) Firefox отключает хранилище DOM внутри расширений, когда он установлен в глобальный частный режим или когда файлы cookie отключены, c) Известно, что IndexedDB в расширениях необъяснимо ошибки, вызывающие потерю данных. Здесь были бы очень полезны библиотеки, такие как PouchDB.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...