`title: IndexedDB 版本迁移与零停机升级``categories: Web 开发/前端/数据管理``keywords: IndexedDB,版本迁移,onupgradeneeded,零停机,兼容``description: 设计安全的 IndexedDB 版本迁移流程,采用幂等与向后兼容策略,实现零停机升级与平滑演进。`迁移策略幂等创建与更新对象仓库与索引,存在则跳过。小步快跑:多次小版本演进,避免大爆炸迁移。实现示例function openDB(name = 'app', version = 3) {
return new Promise((resolve, reject) => {
const req = indexedDB.open(name, version);
req.onupgradeneeded = () => {
const db = req.result;
if (!db.objectStoreNames.contains('items')) {
db.createObjectStore('items', { keyPath: 'id' });
}
const store = req.transaction.objectStore('items');
if (!store.indexNames.contains('byCreatedAt')) store.createIndex('byCreatedAt', 'createdAt');
if (!store.indexNames.contains('byOwner')) store.createIndex('byOwner', 'owner');
};
req.onsuccess = () => resolve(req.result);
req.onerror = () => reject(req.error);
});
}
版本变更处理监听 `onversionchange`,提示刷新或自动重连;迁移完成后恢复业务。

发表评论 取消回复