背景与价值浏览器可能在空间紧张时清理非持久存储;主动持久化与容量估算可降低数据丢失风险。持久化申请与检查async function ensurePersistent() {
if (!('storage' in navigator)) return { ok: false };
const persisted = await (navigator as any).storage.persisted();
if (persisted) return { ok: true };
const granted = await (navigator as any).storage.persist();
return { ok: granted };
}
容量估算与阈值治理async function capacity() {
const est = await (navigator as any).storage.estimate();
const used = est.usage || 0;
const quota = est.quota || 0;
return { used, quota, ratio: used / quota };
}
IndexedDB 分层清理async function prune(dbName: string, keepDays = 30) {
const db = await openDB(dbName);
const tx = db.transaction('items', 'readwrite');
const store = tx.objectStore('items');
const now = Date.now();
for await (const cur of iterateStore(store)) {
if (now - cur.value.ts > keepDays * 86400000) store.delete(cur.key);
}
await tx.done;
}
指标验证(Chrome 128/Edge 130)持久化成功率:≥ 90%。数据保留率:长驻 30 天无丢失 ≥ 99.5%。配额利用:在 70% 以上时清理策略触发,崩溃与失败率不升高。回退策略不支持或拒绝持久化:降低存储占用,启用服务端同步与按需加载。测试清单长期驻留与容量逼近:数据保留稳定;达到阈值时清理生效。

发表评论 取消回复