持久性生命

时间:2013-04-04 16:33:17

标签: indexeddb

我阅读了一些关于IndexdDB的文章,但是找不到有关持久数据生命周期的详细信息。我打算将它用于数据操作会话,并在用户完成后上传。但是如果出现这种情况会发生什么:

  • 用户关闭浏览器标签
  • 用户关闭浏览器
  • 用户重新启动系统

另外, 我通过基于cookie的身份验证维护用户会话。如果用户注销并重新登录,会发生什么?有没有办法在注销之前检索数据?

有关处理此问题的任何文件表示赞赏。我浏览了spec,但读起来并不是那么好。

感谢。

3 个答案:

答案 0 :(得分:13)

就像localStorage,所以它是跨会话,这意味着重启浏览器或系统不会影响存储在其中的内容。但是,用户可以像清除cookie一样清除它。所以它就像持久性cookie一样,你不相信它来自服务器端,你总是需要检查它的完整性。

答案 1 :(得分:4)

IndexedDB数据属于type of temporary。因此,这些数据可以随时消除。

这些数据大小/生命周期由非常新的Quota Management API管理。

将来,IndexedDB可能会使用持久性类型(不太可能也不是好主意)。

答案 2 :(得分:2)

从v52开始,

Persistent Storage在Chrome中可用,从v55开始,在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()时将自动授予它:

  • 该网站已添加书签(用户拥有5个或更少的书签)
  • 该网站具有很高的网站参与度
  • 该网站已添加到移动设备的主屏幕上
  • 该网站已启用推送通知

此列表来自article outlining Chrome's implementation,该列表会定期更新有关该主题的新信息。