更新扩展时 chrome 存储会受到怎样的影响?

How is chrome storage affected when an extension is updated?

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

不,会一样。

在存储中有一些 "schema version" 变量实际上很常见,如果您的数据格式随更新发生变化,您可以使用这些变量来升级存储。

但是,请务必记住,卸载扩展程序会完全擦除存储空间,包括 sync 存储空间(如果启用同步)。

如果更新扩展时没有调用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));
});