我阅读了一些关于IndexdDB的文章,但是找不到有关持久化数据生命周期的详细信息。我打算将它用于数据操作会话,并在用户完成后上传。但如果:
此外,我通过基于cookie的身份验证维护用户会话。如果用户注销并重新登录,会发生什么?有没有办法在注销前检索数据?
有关处理此问题的任何文件表示赞赏我浏览了spec,但它并不是那么好读。
谢谢。
IndexedDB数据属于type of temporary。因此,这些数据可以随时消除。
这些数据大小/生命周期由非常新的Quota Management API管理。
将来,IndexedDB可能会使用持久性类型(不太可能也不是好主意)。
它就像localStorage
,因此它是跨会话的,这意味着重启浏览器或系统不会影响存储在其中的内容。但是,用户可以像清除cookie一样清除它。所以它就像持久性cookie,你不相信它来自服务器端,你总是需要检查它的完整性。
自v55以来,Persistent Storage自v52和Firefox开始在Chrome中推出。但是,不能依赖其他浏览器的支持。您必须测试持久存储是否可用并做出相应的反应。
if (navigator.storage && navigator.storage.persist) {
navigator.storage.persist().then(persistent => {
if (persistent) {
console.log("Storage will not be cleared except by explicit user action");
} else {
console.warn("Storage may be cleared by the UA under storage pressure.");
}
});
}
Chrome需要获得使用此功能的权限。如果满足以下任何条件,则在调用navigator.storage.persist()
时将自动授予它:
此列表来自article outlining Chrome's implementation,它会定期更新有关此主题的新信息。