簡體   English   中英

將內容腳本中的大型JSON / JS對象壓縮為background.js-Chrome擴展

[英]Compress large JSON/JS object from content script to background.js - chrome extension

我想將一個大型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
});

background.js

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

這樣做,background.js中的uncompressedJSONnull

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

我想知道UTF編碼是否與此有關。 該庫似乎工作得很好,因為我能夠將對象壓縮約78%。

也歡迎其他圖書館提出建議!

使用LZString.compressToUTF16LZString.decompressFromUTF16

從所有瀏覽器都可以安全存儲的意義上來說,compressToUTF16會生成“有效的” UTF-16字符串。 因此它們可以存儲在所有經過測試的瀏覽器(IE9-10,Firefox,Android,Chrome,Safari)上的localStorage中。 可以使用decompressFromUTF16解壓縮。 每個字符僅使用15位存儲空間即可工作。 因此,產生的琴弦比通過壓縮產生的琴弦大6.66%

但是,以32MB的字符串塊(以及塊號)發送未壓縮的JSON.stringify結果,然后將它們組合到后台腳本中,仍然要快得多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM