如何清除未使用的indexeddb数据库

时间:2015-08-31 20:45:25

标签: javascript indexeddb

我使用IndexedDB作为本地存储,它运行良好。由于太详细的原因无法进入这里,我经常只创建一个数据库并使用它,但在某些情况下我需要创建更多。在某些情况下,这些额外的数据库最终可能会“孤立”或未使用,并且将来不再需要。未使用的IndexedDB数据库是否会以某种方式“老化”某种本地存储缓存(可能是某些特定于浏览器的方式)?我不介意做自己的清理,但由于似乎没有明确的方法来获取现有数据库的列表,我不确定如何做到这一点。并且用户仅仅删除所有数据库的能力似乎是一种钝器.......

我想我可以在master-DB中保存所有现有数据库的列表....但即使这样,我也不认为我可以删除它们。我能做的最好的就是把它们清空。

感谢您的见解。

2 个答案:

答案 0 :(得分:2)

如果您没有明确删除数据库,通常它会留在那里。但有两种情况会被删除:

  1. 用户删除它。例如,在Chrome中,如果用户清除了Cookie和网站数据",则会删除所有IndexedDB数据库。

  2. 浏览器将其删除。从技术上讲,允许浏览器随时删除任何IndexedDB数据库。实际上,这种情况极少发生,可能永远不会发生。从理论上讲,它应该在磁盘空间不足的情况下发生,但我从未见过它实际发生过,即使我做了一个人工测试,耗尽了虚拟机中的所有磁盘空间。

  3. 这意味着您通常可以非常确定不会删除IndexedDB数据库,除非您将其删除,但您不能依赖它。

答案 1 :(得分:0)

如果不喜欢浏览器在存储压力下删除未使用的数据库,则可以要求其持久存储

navigator.storage.persist()

返回Promise

请参阅: storage.persist definition and example