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

Ste*_*n G 4 javascript indexeddb

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

我想我可以保留一个包含所有现有数据库列表的主数据库......但即便如此,我认为我实际上无法删除它们。我认为我能做的最好的事情就是清空它们。

感谢您的见解。

dum*_*ter 5

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

  1. 用户删除它。例如,在 Chrome 中,如果用户清除“cookies 和站点数据”,则所有 IndexedDB 数据库都将被删除。

  2. 浏览器将其删除。从技术上讲,浏览器可以随时删除任何 IndexedDB 数据库。在实践中,这种情况极少发生,甚至可能永远不会发生。从理论上讲,它应该在磁盘空间不足时发生,但我从未见过它实际发生,即使我进行了人工测试,用完了 VM 中的所有磁盘空间。

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

  • Stephan - Chrome 具有配额 API,您可以使用它来了解您的源站配额分配还剩多少。但目前 chrome 分配配额的方式非常保守;您可以随意将 IDB 设置为您想要的大小,而不必担心影响机器。https://developer.chrome.com/apps/offline_storage#query (2认同)