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

时间:2015-03-04 21:44:07

标签: sql-server html5 browser local-storage indexeddb

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

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

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

关于我们如何处理此事的任何建议?

3 个答案:

答案 0 :(得分:1)

  

我们正在考虑将数据存储在indexedDB中的客户端内,但我读到indexedDB存储在临时存储中,因此无法依赖它的生命周期。

这在技术上是正确的,但在实践中,我从未见过浏览器实际删除数据。更常见的是,如果您要存储大量数据,您将达到配额限制,这些限制很烦人,有时会出现不一致/错误。

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

这可能是一个愚蠢的问题,但您可以访问浏览器之外的存储区吗?例如,如果我不希望在我的应用程序启动并加载大量数据时出现巨大延迟,我是否可以创建一个外部应用程序来刷新"本地数据,以便当浏览器启动时,它已准备好摇滚?

我认为这里的答案是否定的,但我不得不问。

有没有人为大型数据集解决这个问题?例如,在一个标签中加载并在另一个标签中工作?要加载Chrome扩展程序,但可以通过应用程序访问吗?