Хранение данных в browser.storage.sync занимает гораздо больше квоты в Chrome, чем в Firefox.
Я работаю над надстройкой браузера webextension (ссылка). Я планирую, что он будет кроссбраузерным (Firefox и Chromium / Chrome / Blink).
Мне нужно использовать (в Chrome) для хранения строки JSON, вводимой пользователем, чтобы пользовательские настройки можно было синхронизировать между пользовательскими устройствами.
ограничивает размер хранилища, поэтому я пробовал эту библиотеку сжатия JS:
lzutf8 (алгоритм LZ77)
LZUTF8.compress(input-string, {outputEncoding: "StorageBinaryString"});
lz-строка (алгоритм LZW)
LZString.compressToUTF16(string)
(
lzutf8
сжать результаты в меньший размер)
Выше двух оба поддерживают вывод, но когда я попытался сохранить
uint8Array
они стали примерно в 10 раз больше, очевидно, не хранятся в
uint8
формат.
Итак, я обнаружил, что вывод строки - лучший способ хранения.
Сохранение сжатых данных (строки) в Firefox (78) работает нормально . Товар в
browser.storage.sync
размер такой же, как.
Сохранение в Chromium (90) также работает, но элемент в
chrome.storage.sync
размер в 3 раза
String.length
.
Мне нужно объяснение. Я не могу найти никаких документов о том, как (и какой тип объекта) данные хранятся в
storage.sync
. Кроме того, я оценю, есть ли лучшее решение для сжатия и хранения (с поддержкой синхронизации).