使大型 IndexedDB 在浏览器中持久化

Making Large IndexedDB Persistent in Browser

我正在考虑制作一个 LOB html5 Web 应用程序。我们试图完成的主要部分是使应用程序能够脱机。这将意味着从服务器获取大量 SQL 数据并将其存储在浏览器中。这将需要在浏览器中存在很长一段时间,不想每次关闭和重新打开浏览器时都必须不断刷新它。

我们正在考虑将客户端内的数据存储在 indexedDB 中,但我读到 indexedDB 存储在临时存储中,因此不能依赖它的生命周期。有谁知道延长其寿命的任何策略?此外,我们将提取大量数据,因此 1-5mb 的存储空间可能无法满足我们的需求。

我目前的想法是使用 html5 存储 API 将其存储到浏览器存储中,并根据需要将其混合到 indexedDb 中。只需要确保我们可以将存储限制增加到我们需要的任何值。

关于我们如何处理这个问题有什么建议吗?

We are looking at storing the data inside the client in indexedDB but I read that indexedDB is stored in temporary storage so the lifetime of it cannot be relied on.

这在技术上是正确的,但实际上我从未见过浏览器实际删除数据。更常见的是,如果您存储大量数据,您将达到配额限制,这很烦人,有时 inconsistent/buggy.

无论如何,您不应该依赖 IndexedDB 中的数据永远存在,因为用户可以随时删除数据,让他们的计算机在没有备份的情况下崩溃等。

如果您创建 Chrome 扩展,则可以 enable unlimited storage。我已经使用这种方法成功地将数千个大型文本文档持久存储在 indexedDB 中。

这可能是一个愚蠢的问题,但是你可以在浏览器之外访问存储区域吗?例如,如果我不想在我的应用程序启动和加载一堆数据时有很大的延迟,我可以为 "refresh" 本地数据制作一个外部应用程序,这样当浏览器启动时,它就准备好了摇滚?

我假设这里的答案是否定的,但我不得不问。

有人针对大型数据集解决过这个问题吗?例如在一个选项卡中加载并在另一个选项卡中工作? Chrome 加载扩展程序,但通过应用程序访问?