通过启用离线支持为 Firebase 实时数据库节省带宽

Saving bandwidth for Firebase Realtime Database by enabling offline support

我想知道在客户端中为 Firebase 实时数据库启用离线支持是否可以节省带宽? 我想知道 Firebase 客户端是否在启动时从存储中加载数据库然后继续并仅同步稍后添加的内容?或者它是否同步所有内容,如果这不起作用,则回退到他之前存储的离线数据。

如果您正在使用 FirebaseDatabase.getInstance().setPersistenceEnabled(true); 意味着即使您处于离线状态,您也可以查询您的数据库。发生这种情况是因为 Firebase 创建了数据库的本地副本。当您离线时所做的每项更改都会在您恢复在线后更新到 Firebase 服务器上。所以这个选项不是用来节省带宽的,是为了enable offline capabilities.

更清楚地说,每个使用 Firebase 数据库并使用 setPersistenceEnabled(true) 的客户端都维护它自己的内部(本地)数据库版本。更新数据时,首先将数据写入此本地版本的数据库

As a result, all writes to Firebase will trigger local events immediately, before any data has even been written to the server. This means that the app will remain responsive regardless of Internet connectivity.

一旦重新建立 Internet 连接,您将收到相应的当前服务器状态。 Firebase 客户端 synchronizes 与 Firebase 服务器和使用同一数据库的其他客户端的数据。

另一件事要记住,Firebase 会自动管理 connection state 以减少带宽和电池使用量。当客户端没有 active listeners、没有挂起的写入或 onDisconnect 操作,并且没有通过 goOffline 方法明确断开连接时,Firebase 会在 60 秒不活动后关闭连接。

总之,当我们启用离线支持时,带宽没有差异。好处是即使我们没有连接到互联网,我们也可以查询和更改数据库。

希望对您有所帮助。

我今天在 Google Next Amsterdam 与 Googler 交谈,他证实了我的理论。 如果您的应用程序启用了离线支持,并且您要从离线状态转到在线状态,Firebase 将以最智能的方式同步您的数据库。所以这意味着如果可能的话,它只会发送更改后的值。因此,启用离线支持确实可以节省带宽。