Firebase 离线功能
我该怎么用?磁盘持久性还是 keepSynced 调用?
根据我的经验,我可以说它总是取决于你的应用程序的工作方式,以及你如何管理应用程序的事务和数据库。例如,如果你的应用程序中用户只是在编写和读取数据,但他无法删除或编辑数据,那么使用 DiskPersistence
将是正确的选择。
此外,DiskPersistence
会将数据存储在缓存中,这意味着你的应用将在用户的设备中使用更多空间,这可能不是你的最佳选择。
另一方面,如果你的应用程序管理了大量复杂的事务并且你的数据经常更新,那么你可能应该避免使用 DiskPersistence
并在要保持新鲜的引用中使用 keepSynced
。
为什么?
DiskPersistence
存储在本地检索的数据,如果你不将它与连续的 ListenerValueEvents
一起使用,有时会导致大量的去同步显示你的数据。例如:
- 用户 A 在你的应用上写入
Hello World
消息,该消息已收到用户 B 的接收 - 用户 B 在手机中下载来自用户 A 的消息并看到消息
Hello World
- 用户 A 编辑他的消息“Firebase 很酷”。
- 用户 B 仍然会观看
Hello World
消息,即使他更新了数据,因为当 Firebase 过滤时,快照参考是相同的。
为了避免这种情况,最好的办法是将连续的监听器保留在你想要跟踪的引用中。
我可以一起使用吗?
当然,你可以,并且在大多数应用程序中可能最好避免下载大量数据,并且即使用户没有连接也可以让用户使用你的应用程序。
如果你不关心在用户设备中使用缓存空间,我建议你在 FirebaseDatabase
对象中启用 diskPersistence
,并在每个参考中添加 keepSync
标记,这些标记可能在很短的时间内有很多次,或者你想保留新鲜的。