我阅读了几篇关于 IndexdDB 的文章,但找不到有关持久数据生命周期的详细信息。我计划在用户完成后将其用于数据操作和上传会话。但如果发生以下情况会发生什么:
- 用户关闭浏览器选项卡
- 用户关闭浏览器
- 用户重新启动系统
此外,我通过基于 cookie 的身份验证来维护用户会话。如果用户注销并重新登录会发生什么?有没有办法在注销之前检索数据?
任何有关处理此问题的文档表示赞赏。我浏览了规范,但读起来并不好。
谢谢。
就像localStorage
,所以它是跨会话的,这意味着重新启动浏览器或系统不会影响其中存储的内容。但是,用户可以像清除 cookie 一样清除它。所以它就像持久化 cookie,你从服务器端不信任它,你总是需要检查它的完整性。
自 v52 和 Firefox 自 v55 以来,Chrome 和 Firefox 都提供了持久存储。但是不能依赖其他浏览器的支持。您必须测试持久存储是否可用并做出相应反应。
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()
如果满足以下任一条件,调用时将自动授予:
此列表来自概述 Chrome 实现的文章,该文章会定期更新有关此主题的新信息。