我们目前正在构建一个Web应用程序(Django,Ember),我们发现大多数潜在客户都需要对应用程序进行零星的离线访问。
我们需要的不仅仅是“呈现”应用程序,以便用户可以导航,缓存清单中的内容等等(我想我们最终也需要),但我们必须让用户尽可能多地操作如果他们在线显然有一些功能不可用,但应该可以使用应用程序的基本用法。
那就是说,我希望听到一些关于之前遇到过这种情况的人的想法。我看到这个的方式,我们需要:
1.-检查我们是否经常在线/离线,或让用户指定他们何时离线(如智能手机中的飞行模式)。
2.-所有数据都应该转储到IndexedDB中,从那时起我们就使用IndexedDB处理与数据相关的任何事情。
3.-当用户重新联机时,Synch进程必须尝试将数据从脱机用户转储到db online。虽然这可能看起来很危险,但我不希望很多用户同时离线,而其他在线用户正在使用该应用程序,所以我希望这个同步过程不会成为真正的噩梦,我也不会期待有竞争条件。
嗯,显然可以选择创建桌面独立应用程序......但我会尽量避免这种情况......
谢谢!
答案 0 :(得分:3)
要检查用户是离线还是在线,您可以使用navigator.onLine,但并非所有浏览器都支持此属性。然后,如果您针对某些浏览器,则必须使用AJAX调用实现其他解决方案。
关于同步,您可以在服务器上使用CouchDB(NoSQL)等可用解决方案,并在javascript前端使用PouchDB(indexedDB),这将简化同步过程。如果它不符合您的期望,请实现您自己的解决方案,将indexedDB与您的服务器数据库(MySQL,Postgres,MongoDB等)同步,当然,您仍然可以在前端使用pouchDB。 / p>
关于表现,我认为这在很大程度上取决于: