我想知道在Firebase实时数据库的客户端中启用离线支持是否可以节省任何带宽? 我想知道Firebase客户端在启动时是否从存储加载数据库然后继续并且仅同步稍后添加的内容?或者它是否同步所有内容,如果这不会影响他之前存储的离线数据。
答案 0 :(得分:1)
如果您使用的是FirebaseDatabase.getInstance().setPersistenceEnabled(true);
,则意味着即使您处于离线状态,您也可以查询数据库。这种情况正在发生,因为Firebase会创建数据库的本地副本。在您离线时进行的每项更改都将在您重新联机后在Firebase服务器上进行更新。因此,此选项不用于节省带宽,而是用于enable offline capabilities。
更清楚的是,使用Firebase数据库并使用setPersistenceEnabled(true)
的每个客户端都维护着自己的数据库内部(本地)版本。更新数据时,首先将写入此数据库的本地版本。
因此,在将任何数据写入服务器之前,对Firebase的所有写入都将立即触发本地事件。这意味着无论互联网连接如何,应用都将保持响应。
重新建立Internet连接后,您将收到适当的当前服务器状态。 Firebase客户端synchronizes
与Firebase服务器以及使用相同数据库的其他客户端的数据。
另一件需要记住的事情是,Firebase会自动管理connection state
以减少带宽和电池使用量。当客户端没有active listeners
,没有待处理的写入或onDisconnect
操作,并且goOffline
方法未明确断开连接时,Firebase会在60秒不活动后关闭连接。
总之,当我们启用离线支持时,带宽没有区别。好处是,即使我们没有连接到互联网,我们也可以查询和更改数据库。
希望它有所帮助。
答案 1 :(得分:-2)
我今天在谷歌下一个阿姆斯特丹与一位Google员工交谈,他证实了我的理论。 如果您在应用中启用了离线支持,并且您处于离线状态,则Firebase将以最智能的方式同步您的数据库。这意味着如果可能的话,它只会发送更改后的值。因此,启用离线支持可以节省带宽。