Safari上的IndexedDB能保证持久吗?

lfapxunr  于 2022-12-16  发布在  IndexedDB
关注(0)|答案(3)|浏览(291)

this question类似,IndexedDB是否保证是持久性的?即,如果设备内存不足,Safari将不会回收磁盘空间。

63lcw9qa

63lcw9qa1#

Safari有“No Eviction policy“,这意味着它不会在磁盘压力较低时自动清理IndexDB,而不需要用户手动操作。
IndexDB是一个快速发展的特性,你可以期待在任何时候有一个不同的回收策略,而不需要声明。你应该总是用回退选项来构建。
Chrome有明确的persistent storage option,这将保证没有驱逐,在用户批准的持久存储,我们可以期待Safari做同样的某个时候,根据他们的跟踪记录,以下Chrome在实现PWA功能(虽然它需要多年的超级糟糕的文档)。

x4shl7ld

x4shl7ld2#

根据this blog post from the WebKit team,IndexedDB不保证在iOS和iPadOS 13.4以及macOS上的Safari 13.1中具有持久性。Safari将在使用Safari七天后删除它,而无需与网站交互:
现在,ITP已将剩余的脚本可写存储表单与现有的客户端Cookie限制进行了调整,在Safari使用七天后,如果用户没有在网站上进行交互,将删除网站的所有脚本可写存储表单。以下是受影响的脚本可写存储表单(不包括一些旧网站数据类型):

  • IndexedDB
  • 本地存储
  • 媒体密钥
  • 会话存储
  • Service Worker注册和缓存

但是,如果您的Web应用程序安装在主屏幕中,IndexedDB几乎可以保证是持久的,因为Web应用程序将有自己的使用上下文,并且由于其本身的性质,不可能在七天内使用它而不访问它来自的网站:
[...]添加到主屏幕的Web应用程序不是Safari的一部分,因此有自己的使用天数计数器。它们的使用天数将与重置计时器的Web应用程序的实际使用相匹配。我们不希望此类Web应用程序的第一方删除其网站数据。
不管上面说了什么,我个人并不相信IndexedDB能长期存储数据,我发现它很糟糕,不久前在Safari 14.1.1中完全崩溃了。

ua4mk5z4

ua4mk5z43#

我没有明确的答案,但在大型浏览器/桌面(基于电子)application中使用IndexedDB超过2年后,我会将多个数据丢失归因于IndexedDB或至少Chrome中的IndexedDB。

相关问题