【问题标题】:Making Large IndexedDB Persistent in Browser使大型 IndexedDB 在浏览器中持久化
【发布时间】:2017-03-29 05:01:03
【问题描述】:

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

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

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

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

【问题讨论】:

  • 抱歉,Line of Business 的缩写,即企业应用程序。

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


【解决方案1】:

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

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

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

【讨论】:

  • 您好 Dumbmatter,感谢您的回复。如果用户的计算机损坏或删除数据,我不会太分阶段,这将是 5% 的情况。我想确保处理 95% 的正常日常案例,并且我们可以将大量 indexedDb 数据存储到浏览器中。如果数据在 5% 的情况下被吹走,我们只需要回调服务器来刷新它。
  • 那么你可能对 IndexedDB 没问题,只是要注意配额如何。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    这可能是一个愚蠢的问题,但是您可以访问浏览器之外的存储区域吗?例如,如果我不想在我的应用程序启动并加载大量数据时出现巨大的延迟,我是否可以制作一个外部应用程序来“刷新”本地数据,以便在浏览器启动时,它已准备好运行?然后滚动?

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

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

    【讨论】:

      猜你喜欢
      • 2013-05-14
      • 2015-03-17
      • 1970-01-01
      • 2013-12-04
      • 1970-01-01
      • 2012-05-28
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      相关资源
      最近更新 更多