我正在使用Firebase作为后端实现AngularJS Web应用程序;它也应该脱机工作;多用户同步问题应该非常有限,因为app - by design - 只允许 新 离线时的数据条目。
我了解Firebase具有脱机功能,从某种意义上说,客户端可以承受临时网络连接故障:任何写入操作都将被延迟并缓存,直到网络再次出现。
我问是否存在任何可能性(或者是否计划实施它)以扩展Firebase离线功能,以使客户端能够在本地缓存服务器上(部分)数据的快照,从而为客户提供完整的离线体验,也提供读取操作。
我看到了 第三部分Firebase包装器 存在,但它的文档非常“有限”(善良...... :-)。一个 本地人 解决方案应该是首选......
UPDATE:Frank van Puffelen发表评论后,我更有资格证明我的问题:
* Firebase本身是否支持脱机数据 访问 在其Web API中,还是会很快?*
Firebase的替代方案可以解决JS应用程序的这个问题 CouchDb (server) <=> PouchDb (JS client)
。如果你为AngularJS应用程序实现了一个漂亮的干净服务层,那么移植到PouchDb应该是相当直接的,因为两者都是 NoSQL/JSON
数据库。
PouchDb是一个实现的Javascript API 完全离线 CouchDb客户端。它可以自动检测和使用 _local storage_
, _IndexDb_
要么 _WebSQL_
在线或离线时永久保留本地数据。 PouchDb API可用于访问本地或远程数据库(只需更改URL),并在两者之间连接完整同步或过滤同步。有许多有用的PouchDb插件,代码示例和一个小的包装器库来支持AngularJS的Q promises API。
使用PouchDb,您可以在离线时安全地启动应用程序,然后几天后重新启动应用程序并将所有CUD数据更改同步到服务器。这可能导致更新冲突,因此CouchDb支持用于检测和跟踪此操作的记录版本控制。因此,您可能需要服务器端逻辑来解决这些冲突。对于具有离线同步和CouchDb关键功能的分布式系统而言,这是不可避免的(不完全正确...请参阅注释)
PouchDb基本上是Apache CouchDb的重新实现,包括它的高效同步协议。 CouchDb和PouchDb都经过了良好的测试,免费和开源。开源意味着CouchDb服务器也可以部署为Intranet服务 - 可选择同步到外部云服务。有许多CouchDb托管服务提供商。
Cloudant托管团队最近将他们的BigCouch群集功能添加到Apache CouchDb 2.0项目,现在您可以从Micro Db(PouchDb)=>单服务器=>多主服务器(复制)=>大沙发集群/地理集群进行扩展。与MongoDb不同,CouchDb安全地支持单服务器部署。
注意:PouchDb也可以使用相同的协议同步到CouchBase但Couchbase!== CouchDb。这是一种商业产品。
链接:
CouchDb Hosters:
DIY
Docker + CouchDb:
卡车负载的插件
PouchDb有许多扩展点和增长列表插件(最后计数37个):
安全模型
迁移到CouchDb时需要考虑的一个问题是它具有更有限的访问控制模型。这部分是由于它的复制算法。这篇博文详细介绍了这一点(比...更好) 真实 权威指南)。
根据Firebase文档,它确实: https://www.firebase.com/docs/web/guide/offline-capabilities.html
从网站:
Firebase提供了一些简单的原语,允许在客户端与Firebase服务器断开连接时写入数据。无论客户端是否干净地断开连接,都会发生这些更新,因此即使连接断开或客户端崩溃,我们也可以依赖它们来清理数据。所有Firebase写入操作(包括设置,更新和删除)都可以在断开连接时执行。
我是否错误地解释了这个问题?
我几乎删除了我的帖子,但当我点击OP给出的链接时,我看到第三方软件包与Firebase本身的功能完全相同,也许是在Firebase改进同步之前完成的?
当我删除帖子时,我认为OP可能只想要一组选择性数据,而不是“活动数据”,这是FB存储在本地,直到连接恢复