是否有类似ondelete事件处理程序或在用户想要清除indexedDB数据库之前警告用户的方法。
背景: 有一个离线的第一个应用程序,它通过在离线时保存indexedDB上的大部分数据来工作。现在,当用户上线时,它会尝试将数据同步到服务器,但是,现在,如果有人错误地重置浏览器或清除indexedDB,他们可能会造成灾难,因为他们拥有需要同步到服务器的重要数据。
那么,有什么办法可以解决这个问题吗?有没有办法将indexedDB保存为持久文件系统或禁用删除或引发事件并在删除时正确处理?
答案 0 :(得分:4)
没有。尽管我们中的一些人正在使用它,但无法保证IndexedDB数据库中的数据将保留在那里。这是设计,它是"临时"存储。如果需要,浏览器可以释放空间。最终有可能store IndexedDB data as "persistent" data时,情况会有所改善,但永远不会成为保证数据不被删除的方法。恕我直言,用户应该能够删除他们的计算机上的数据,如果这不是真的那将是一个重大问题。
问题可能比你意识到的还要糟糕。例如,here's a bug in Chrome(也可能在其他浏览器中)。如果用户说“过去24小时内删除了我的Cookie和网站数据”,则Chrome会完全删除过去24小时内已更改的任何IndexedDB数据库。因此,如果数据库中有5000个对象,这些对象是一年前创建的,但从那以后从未更改过,而且今天编辑过的对象都被删除了。这可能会让用户感到困惑,但据我所知,没有人提出过一个好的解决方案。
唯一的解决方法是同步到服务器,显然不是100%可靠。因此,如果您有任何非常重要的数据,它可能不应该在网站的IndexedDB数据库中,除非作为缓存。