如何解决将相同的数据存储到 storage.sync 中,Chrome 使用的配额比 Firefox 多得多
我正在开发 webextension 浏览器插件 (link)。我计划它是跨浏览器的(Firefox 和 Chromium/Chrome/Blink)。
我需要使用 browser.storage.sync
(Chrome 上的 chrome.storage.sync
)来存储用户输入的 JSON 字符串,以便用户自定义可以在用户的设备之间同步。
storage.sync
限制存储大小,所以我尝试了这些 JS 压缩库:
-
lzutf8(LZ77 算法)
LZUTF8.compress(input-string,{outputEncoding: "StorageBinaryString"});
-
lz-string(LZW 算法)
LZString.compresstoUTF16(string)
(lzutf8
将结果压缩成更小的尺寸)
以上两个都支持 uint8Array
输出,但是 当我尝试将 uint8Array
存储到 storage.sync
时,它们大约大了 10 倍,显然没有真正存储在 uint8
中格式。
然后我发现输出字符串是最好的存储方式。
将压缩数据(字符串)存储到 Firefox (78) 中可以正常工作。 browser.storage.sync
大小的项目与 String.length
相同。
存储到 Chromium (90) 也可以,但 chrome.storage.sync
大小的项目是 String.length
的 2-3 倍。
我需要一些解释。我找不到任何关于如何(以及什么对象类型)数据存储在 storage.sync
中的文档。另外,如果有更好的压缩和存储(支持同步)解决方案,我会很高兴。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。