Firebase 缓存与实现自定义聊天室缓存



我们正在使用Firebase实时数据库,我正在考虑在本地实施缓存以减少重复调用。

所以我想出了一个涉及房间持久性库的算法。

stream only the latest data from firebase
   store in room cache
when requested fetch all data from room cache and return

但后来我开始考虑Firebase提供的缓存,并开始意识到我可能完全可以避免房间库。

stream only the latest data from firebase
when requested call fetch data using a singleValueListener

由于我们使用单值侦听器,因此只会从 Firebase 获取缓存的数据。

使用第二种方法的缺点是什么?我知道火碱缓存限制为 10MB,所以这可能是一个

您需要知道的一件大事是,SDK 管理的缓存几乎完全不受您的控制。 您可以设置缓存的大小,也可以通过尝试查找缓存使用的数据库文件来清除缓存,但否则无法对其进行配置。

如果你自己编写代码,就必须对它的工作原理做出每一个决定,并且需要大量的代码才能把一切都做好。

与 Cloud Firestore 中默认启用离线持久性不同,在 Firebase 实时数据库中,要启用离线功能,您需要使用以下代码行:

FirebaseDatabase.getInstance().setPersistenceEnabled(true);

这意味着默认情况下,您将拥有数据库的本地副本。所以没有必要添加另一个。因此,通过这种方式,您只会获得新数据,否则您从缓存中获取的所有数据。

最新更新