【问题标题】:Unexpected bytes used in chrome storagechrome 存储中使用了意外的字节
【发布时间】:2019-07-02 23:58:40
【问题描述】:

我正在编写一个使用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”键和“

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

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

编辑:我使用的是 Google Chrome 版本 73.0.3683.75(官方版本)(64 位)

【问题讨论】:

  • 这可能是一个错误,但即使不是,您也在尝试匹配实现的未记录的内部细节,这些细节不能保证在浏览器版本之间保持不变。你可以在cs.chromium.org查看 Chromium 的源代码。
  • 是的,你是对的,无论哪种方式,我都必须处理保存时发生的任何错误,但这让我很好奇。我想这就是我要找的东西:cs.chromium.org/chromium/src/extensions/browser/api/storage/…。我会仔细看看。

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


【解决方案1】:

感谢 w0xx0m 的评论,我找到了原因。

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

源码可以在here找到。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-25
    • 1970-01-01
    • 2011-12-24
    • 1970-01-01
    • 1970-01-01
    • 2017-03-15
    • 1970-01-01
    相关资源
    最近更新 更多