Google chrome extension 如何将大量数据从chrome.storage.local传输到JSON文件?
我正在创建一个Chrome扩展,它将大量数据存储在Google chrome extension 如何将大量数据从chrome.storage.local传输到JSON文件?,google-chrome-extension,Google Chrome Extension,我正在创建一个Chrome扩展,它将大量数据存储在Chrome.storage.local中。我所说的“很多”,是指当我做这样的事情时: chrome.storage.local.getBytesInUse(i => console.log(i)) …我打印150873495,表示我存储了大约150MB。我希望能够储存更多的东西。我知道Chrome扩展有很多数据,但它将在我自己的机器上运行 我之前发布过,这个问题通过Chrome内部的bug修复得到了解决。现在我有另一个问题 我想将chr
Chrome.storage.local
中。我所说的“很多”,是指当我做这样的事情时:
chrome.storage.local.getBytesInUse(i => console.log(i))
…我打印150873495
,表示我存储了大约150MB。我希望能够储存更多的东西。我知道Chrome扩展有很多数据,但它将在我自己的机器上运行
我之前发布过,这个问题通过Chrome内部的bug修复得到了解决。现在我有另一个问题
我想将chrome.storage.local
中的所有数据传输到某种文本文件(如JSON)。但是,当我运行像这样简单的东西时:
chrome.storage.local.get(
null,
result => {
console.log("Records retrieved");
}
);
…my extension(可在Chrome任务管理器中找到)的内存使用量激增至约2.4 GB,比Chrome.storage.local
中数据占用磁盘的150 MB大一个数量级。假设我想使用中描述的方法将此数据保存到文件中。我需要调用JSON.stringify
:
chrome.storage.local.get(
null,
result => {
console.log("Records retrieved");
const json = JSON.stringify(result);
console.log("JSON string length: " + json.length);
}
);
它永远不会出现“JSON字符串长度”注释,因为JSON.stringify
调用会导致内存使用超过4GB内存限制,扩展崩溃。我有几个问题:
- 有没有办法在不使用4 GB内存的情况下保存150 MB的存储空间
- 有没有一种简单的方法可以将这些数据分块保存?考虑到JavaScript和chrome.storage的异步特性,构建一种安全的方法似乎很棘手
function randomString() {
return Math.floor(Math.random() * 0xFFFFFFFF).toString(16);
}
for (let i = 0; i < 70000; i++) {
const item = {time: Date.now()};
for (let j = 0; j < 100; j++ ) {
item[randomString()] = randomString();
}
const recordName = "record-" + Date.now() + "-" + randomString();
const items = {};
items[recordName] = item;
chrome.storage.local.set(items);
}
函数randomString(){
返回Math.floor(Math.random()*0xFFFFFFFF).toString(16);
}
对于(设i=0;i<70000;i++){
const item={time:Date.now()};
对于(设j=0;j<100;j++){
项[randomString()]=randomString();
}
const recordName=“record-”+Date.now()+“-”+randomString();
常量项={};
项目【记录名称】=项目;
铬。存储。本地。设置(项目);
}
在chrome.storage.local中,这似乎占用了大约160 MB的内存,但在内存中却占用了大约2.7 GB。是否150MB实际上是压缩大小,而普通的表示形式实际上是千兆字节?@Xan这似乎是一个合理的解释。我很乐意生成一个多GB的文件,如果JSON表示就是这样的话。我的问题是,我现在甚至不能这样做。您的数据在存储中是如何组织的?你能把这一点补充到问题中吗?事实上,对于非均匀值,我看到了内存消耗的巨大峰值。在将来的Chrome中修复此问题之前,您可能必须找到一个独立的工具,使用一些可以读取LevelDB并导出为JSON的实用程序直接读取文件(“浏览器配置文件目录中的本地扩展设置”)。或者自己编写一个,例如使用node.js模块。