Хранение данных в 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. Кроме того, я оценю, есть ли лучшее решение для сжатия и хранения (с поддержкой синхронизации).