gpt4 book ai didi

javascript - 将大型 JSON/JS 对象从内容脚本压缩到 background.js - chrome 扩展

转载 作者:行者123 更新时间:2023-12-03 01:16:30 25 4
gpt4 key购买 nike

我想将一个大的 JSON/JS 对象从 content.js 发送到 background.js

我已经尝试使用库lz-string来压缩对象。

content.js

var compressedJSON = LZString.compress(JSON.stringify(largeObject));
chrome.runtime.sendMessage({type: "type1", result: compressedJSON}, function(response){
// handle response
});

背景.js

var uncompressedJSON = JSON.parse(LZString.decompress(request.result));

这样做,我在background.js中得到uncompressedJSONnull

但是,如果我使用 LZString.decompress() 解压缩 content.js 中的相同字符串 compressedJSON,它就可以工作!

我想知道UTF编码是否与此有关。这个库似乎工作得非常好,因为我能够将我的对象压缩大约 78%。

也欢迎对其他库提出建议!

最佳答案

使用LZString.compressToUTF16LZString.decompressFromUTF16:

compressToUTF16 produces "valid" UTF-16 strings in the sense that all browsers can store them safely. So they can be stored in localStorage on all browsers tested (IE9-10, Firefox, Android, Chrome, Safari). Can be decompressed with decompressFromUTF16. This works by using only 15bits of storage per character. The strings produced are therefore 6.66% bigger than those produced by compress

但是,以 32MB 字符串 block (以及 block 编号)发送未压缩的 JSON.stringify 结果,然后在后台脚本中将它们组合起来,速度仍然要快得多。

关于javascript - 将大型 JSON/JS 对象从内容脚本压缩到 background.js - chrome 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51989742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com