持久寿命(Persistence lifetime)

2019-08-19 14:06发布

我读到IndexdDB几篇文章,但找不到任何关于保留的数据的生命周期细节。 我打算将它用于数据处理的会话和上传一旦用户完成。 但是,会发生什么,如果:

  • 用户关闭浏览器选项卡
  • 用户关闭浏览器
  • 用户在系统重新启动

另外,我通过维持基于cookie身份验证的用户会话。 如果用户注销时会发生,然后再次登录怎么办? 有没有一种方法来检索注销之前的数据?

在此处理任何文件表示赞赏。 我通过脱脂规范 ,但它并不好读。

谢谢。

Answer 1:

IndexedDB的数据属于一个类型的临时 。 因此,这些数据可以随时被消灭。

这些数据大小/寿命是由很新的管理配额管理API 。

在未来,IndexedDB的可能可能使用的持久性类型(不太可能,而不是好主意太)。



Answer 2:

这就像localStorage ,所以它是跨会话,这意味着重新启动浏览器或系统不会影响什么是存储在它。 然而,用户可以清除它像清理饼干。 所以,这就像永久的cookie,你不从服务器端信任它,你总是需要检查其完整性。



Answer 3:

永久存储自从V55 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()如果有以下为真:

  • 该网站书签(以及用户具有5页或更少的书签)
  • 该网站具有较高的网站互动
  • 该网站已被添加到主屏幕上的移动设备
  • 该网站已启用推送通知

这份名单来自于一个文章,概述Chrome的实现这与有关此主题的新的信息定期更新。



文章来源: Persistence lifetime
标签: indexeddb