【问题标题】:How is chrome storage affected when an extension is updated?更新扩展程序时,chrome 存储如何受到影响?
【发布时间】:2015-02-11 22:01:13
【问题描述】:

如果用户将数据添加到扩展程序chrome.storage.local/sync,则扩展程序会更新,因为发布了新版本。 chrome.storage.local/sync 会保持不变还是会重置?

【问题讨论】:

    标签: google-chrome google-chrome-extension


    【解决方案1】:

    不,还是一样。

    实际上,如果您的数据格式因更新而发生变化,您可以在存储中使用一些“模式版本”变量来升级存储。

    但是,请务必记住,卸载扩展程序将彻底清除存储空间,包括如果启用了同步,sync 存储空间。

    【讨论】:

    • 此外,删除配置文件将擦除该特定配置文件上扩展程序(包括扩展程序)中存储的数据
    • 但是,如果删除本地配置文件,@vux777 storage.sync 将继续存在。众多优势之一..
    • 因为“云”的事情,对吧?在本地,它们将被擦除,如果用户创建具有相同同步 acc 的新配置文件,那么它将同步......或者还有另一种机制?另外,同步对于扩展数据不是很有用,大小非常有限......
    • 也许我们可以通过本地优先方法异步使用本地存储和云?存储API我没用过,但是如果和HTML5一样的话,我们可以创建一个足够的存储管理。
    【解决方案2】:

    如果更新扩展时未调用chrome.storage.sync.set,则保留旧数据。

    如果状态键值在更新过程中发生变化,需要清除数据,否则会积累大量丢弃的值。

    const initData = { a: 10, b: 20 };
    
    // Use old value if there is one
    // If a new value is added, the value of `initData` is used by default
    chrome.storage.sync.get(dataRaw => { 
      const data = Object.entries(initData).reduce((acc, [k, v]) => {
        return { ...acc, [k]: dataRaw[k] === undefined ? v : dataRaw[k] };
      }, {});
     // Clean up unwanted data
      chrome.storage.sync.clear(() => chrome.storage.sync.set(data));
    });
    

    【讨论】:

      猜你喜欢
      • 2022-07-08
      • 1970-01-01
      • 2013-01-10
      • 1970-01-01
      • 2019-12-19
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多