Chrome存储中使用了意外的字节

时间:2019-07-02 14:11:43

标签: google-chrome google-chrome-extension google-chrome-storage

我正在写一个使用chrome.storage API的扩展。我想截断每个项目,以确保它低于存储的最大字节阈值(本地和同步)。

文档指出每个项目的字节大小为

  

通过JSON字符串化对其值加上其密钥长度进行度量。

我使用以下代码来计算预期的字节大小:

new TextEncoder().encode(JSON.stringify(value)).length + key.length

我使用以下代码检查实际使用情况:

chrome.storage.<storage-area>.set({ [key]: value }, () => {
   chrome.storage.<storage-area>.getBytesInUse(key, bytes => {
        console.log("actual bytes in use", bytes);
   });
});

给定键“ test”和值“ abc”,预期的字节使用量为9b。实际的字节使用量是9b。

给定键“ test”和值“«ταБЬℓσ»”,预期的字节使用量为23b。实际的字节使用量是23b。

给出键“ test”和值“ <”,预期的字节使用量为7b。实际的字节使用量是12b。

当然,每次检查之间都会清除存储空间。

在最后一个示例中,是什么导致这5个额外的意外字节?我想念什么?

编辑:我正在使用Google Chrome版本73.0.3683.75(正式版本)(64位)

1 个答案:

答案 0 :(得分:2)

由于w0xx0m的评论,我找到了原因。

Chrome / Chromium将小于字符替换为“ \ u003C”,以防止脚本执行。

可以找到源代码here