持久性生命

bsr*_*bsr 24 indexeddb

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

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

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

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

谢谢.

Cat*_*hen 14

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


Bes*_*rks 8

从 v52 开始,Chrome 和 Firefox 从 v55 开始提供持久存储。但是不能依赖其他浏览器的支持。您必须测试持久存储是否可用并做出相应的反应。

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.");
    }
  });
}
Run Code Online (Sandbox Code Playgroud)

Chrome 需要获得使用此功能的权限。navigator.storage.persist()如果满足以下任一条件,将在调用时自动授予:

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

此列表来自一篇概述 Chrome 实现文章,该文章会定期更新有关此主题的新信息。


小智 6

截至 2022 年,IndexedDB 是持久类型的数据存储。\n因此,如果用户选择,它就会被驱逐。

\n
\n

注意:引入Storage API后,“permanent”文件夹可以认为是过时的;“permanent”文件夹仅存储IndexedDB持久类型数据库。盒子模式是“尽力而为”还是“持久”并不重要 \xe2\x80\x94 数据存储在 /storage/default 下。\n https://developer.mozilla.org/en-US/文档/Web/API/IndexedDB_API/Browser_storage_limits_and_eviction_criteria

\n
\n

因此,如果用户注销并再次登录,则用户可以像注销之前一样访问数据。

\n

  • 如果浏览器的硬盘空间不足,也可以在无需用户干预的情况下删除数据,如 MDN 链接中所述。 (4认同)

Kya*_*Tun 5

IndexedDB 数据属于一种临时的. 因此,这些数据可以随时清除。

这些数据大小/生命周期由非常新的配额管理 API 管理

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

  • 看来 Chrome 正在向前推进,允许打开持久性。但看起来它要到 2016 年 10 月才会普遍可用。 https://developers.google.com/web/updates/2016/06/persistent-storage (3认同)