【发布时间】:2016-02-23 20:30:29
【问题描述】:
我们目前正在构建一个网络应用程序(Django、Ember),我们刚刚发现我们的大多数潜在客户都需要偶尔离线访问该应用程序。
我们需要的不仅仅是“呈现”应用程序以便用户可以导航、缓存 Manifest 中的内容等等(我想我们最终也会需要),但我们必须让用户尽可能多地实际操作如果他们在线。显然会有一些功能不可用,但应用程序的基本用法应该是可用的。
也就是说,我很想听听以前遇到过这种情况的人的一些想法。在我看来,我们需要:
1.- 检查我们是否经常在线/离线,或者让用户指定他们何时离线(类似于智能手机中的飞行模式)。
2.- 所有数据都应转储到 IndexedDB 中,从那一刻起,我们将 IndexedDB 用于与数据相关的任何内容。
3.- 当用户重新联机时,同步进程必须尝试将数据从脱机用户转储到联机数据库。虽然这看起来很危险,但我不希望有很多用户在其他在线用户使用该应用程序的同时离线,所以我希望这个同步过程不会成为真正的噩梦,我也不会期望有竞争条件。
嗯,显然可以选择创建桌面独立应用程序...但我会尽量避免这种情况...
谢谢!
【问题讨论】:
-
为了帮助解决 #1,您可以为
offline和online事件添加事件处理程序。当设备离线并重新在线时会触发这些。 -
您在服务器上使用哪个数据库?
-
@LouisBarranqueiro PostgreSQL 和 redis 用于缓存
-
对于任何回到这里的人,我发现了这个资源丰富的好网站github.com/pazguille/offline-first,甚至不知道有一个叫做 ServiceWorkers 的东西......
标签: django offline offline-caching offline-mode offline-browsing