9

我们目前正在构建一个网络应用程序(Django、Ember),我们刚刚发现我们的大多数潜在客户都需要对应用程序进行零星的离线访问。

我们需要的不仅仅是“呈现”应用程序以便用户可以导航、缓存清单中的内容等等(我想我们最终也会需要),但我们必须让用户尽可能地实际操作,就好像他们是在线的。显然会有一些功能不可用,但应用程序的基本用法应该是可用的。

也就是说,我很想听听以前遇到过这种情况的人的一些想法。在我看来,我们需要:

1.- 检查我们是否经常在线/离线,或者让用户指定他们何时离线(类似于智能手机中的飞行模式)。

2.- 所有数据都应该转储到 IndexedDB 中,从那一刻起,我们将 IndexedDB 用于与数据相关的任何内容。

3.- 当用户重新上线时,同步进程必须尝试将离线用户的数据转储到在线数据库。虽然这看起来很危险,但我不希望有很多用户在其他在线用户使用该应用程序的同时离线,所以我希望这个同步过程不会成为真正的噩梦,我也不期望有竞争条件。

好吧,显然可以选择创建桌面独立应用程序......但我会尽量避免这种情况......

谢谢!

4

1 回答 1

4
  1. 要检查用户是离线还是在线,您可以使用navigator.onLine但并非所有浏览器都支持此属性。然后,如果您以其中一些浏览器为目标,您将不得不使用例如 AJAX 调用实现其他解决方案。

  2. 关于同步,您可以在您的服务器上使用可用的解决方案,如CouchDB (NoSQL),并在您的 javascript 前端使用PouchDB (indexedDB),这将简化您的同步过程。如果它不符合您的期望,请实现您自己的解决方案,将 indexedDB 与您的服务器数据库(MySQL、Postgres、MongoDB 等)同步,当然,您仍然可以在前端使用 pouchDB。

  3. 关于性能,我认为这将很大程度上取决于:

    • 托管您的 Web 应用程序的服务器数量
    • 主数据库的副本数
    • 服务器配置(CPU 和 RAM)
于 2015-11-21T13:38:57.733 回答