Google chrome extension 如何将大量数据从chrome.storage.local传输到JSON文件?

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扩展,它将大量数据存储在
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模块。