如果用户将数据添加到扩展chrome.storage.local/sync
,则扩展会因为发布了新版本而更新。chrome.storage.local/sync
还是会重置?
不,它将是相同的。
实际上,在存储中有一些"架构版本"变量是很常见的,如果数据格式随更新而更改,您可以使用这些变量来升级存储。
但是,重要的是要记住,卸载扩展将完全擦除存储,如果启用了同步,则包括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));
});