首页 > 解决方案 > 将相同的数据存储到 storage.sync 中,Chrome 使用的配额比 Firefox 多得多

问题描述

背景

我正在开发一个浏览器插件(webextension API),它是跨浏览器(Firefox & Chromium/Chrome/Blink)。

我需要使用browser.storage.syncchrome.storage.sync在 Chrome 上)来存储,以便可以同步数据。

storage.sync限制存储大小(128kB),所以我尝试了这些 JS 压缩库:

lzutf8压缩导致尺寸更小)

使用压缩库

以上两个都支持uint8Array输出,但是当我尝试存储时,uint8Array它们storage.sync大约大了 10 倍,显然没有真正以uint8格式存储。

然后我发现压缩成字符串是最好的存储方式:

Y1 = LZUTF8.compress(input-data, {outputEncoding: "StorageBinaryString"});
Y2 = LZString.compressToUTF16(input-data)

(两个 Y 都是 UTF16 字符串)

问题

将压缩数据 Y(字符串)存储到 Firefox(78)和 Chromium(90)中,它占用的空间storage.sync不同

(使用的空间可以通过storage.sync.getBytesInUse().Firefox 和 Chromium 看到相同的 quata 限制:128k 字节)

我需要一些解释。我找不到任何关于如何(以及什么对象类型)数据存储在storage.sync. 另外,如果有更好的压缩和存储(支持同步)解决方案,我会很高兴。

标签: javascriptgoogle-chrome-extensionfirefox-addon-webextensionsgoogle-chrome-storagewebextension-storage

解决方案


推荐阅读