IndexedDB 持久性生存期

yv5phkfx  于 2022-12-09  发布在  IndexedDB
关注(0)|答案(4)|浏览(618)

我读过一些关于IndexdDB的文章,但是没有找到关于持久化数据生存期的细节。我计划在用户完成后使用它进行数据操作和上传。但是如果出现以下情况会发生什么:

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

另外,我通过基于cookie的身份验证来维护用户会话。如果用户注销并再次登录,会发生什么?有没有办法在注销前检索数据?
任何关于处理这一问题的文档都很感谢。我浏览了X1 E0 F1 X,但它不是一个很好的阅读。

  • 谢谢-谢谢
gt0wga4j

gt0wga4j1#

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

xienkqul

xienkqul2#

Persistent Storage在Chrome v52和Firefox v55中已经可用。但其他浏览器的支持并不可靠。您必须测试永久存储是否可用并做出相应React。

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,它会定期更新有关此主题的新信息。

xmjla07d

xmjla07d3#

IndexedDB的数据属于一个type of temporary.所以这些数据可以随时被擦除。
这些数据大小/生命周期由非常新的Quota Management API管理。
将来,IndexedDB可能会使用持久类型(不太可能,也不是好主意)。

jpfvwuh4

jpfvwuh44#

从2022年起,IndexedDB是一种持久性的数据存储类型,因此,如果用户选择将其逐出,它就会被逐出。
注:引入Storage API后,“永久”文件夹可视为过时;“permanent”文件夹仅存储IndexedDB持久类型的数据库。无论箱式模式是“best-effort”还是“persistent”,数据都存储在/storage/default下。https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API/Browser_storage_limits_and_eviction_criteria
因此,如果用户注销并再次登录,则用户可以像注销前一样访问数据。

相关问题