Firebase缓存与实施自定义房间缓存

时间:2019-07-16 14:16:36

标签: android firebase-realtime-database android-room

我们正在使用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中获取。

使用第二种方法有哪些弊端?我知道Firebase缓存限制为10MB,所以可能是一个

2 个答案:

答案 0 :(得分:1)

您需要在这里了解的一件事是,SDK管理的缓存几乎完全在您的控制范围之外。您可以set the size of the cache,并且可以通过尝试查找它使用的数据库文件来清除它,但是否则,您将无法对其进行配置。

如果您自己编写代码,则必须做出每一个决定其工作方式的方法,并且要弄清所有内容,将需要大量代码。

答案 1 :(得分:0)

不同于在Cloud Firestore中默认启用offline persistence的情况,在Firebase实时数据库中要启用offline capabilities的情况,您需要使用以下代码行:

FirebaseDatabase.getInstance().setPersistenceEnabled(true);

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