Firebase是否每次都从服务器进行查询

时间:2018-05-25 05:22:07

标签: java android firebase google-cloud-firestore

我在Android应用中使用Cloud Firestore数据库。 (我正在使用Android SDK)。当应用程序启动时,我查询登录的用户数据,并且当文档说明时,副本存储在本地。

如果文档数据没有变化,当我查询.get文件时,Firebase会不会查询服务器或从本地副本返回?我问的原因是Firebase数据库是基于事务的,我不想多次不必要地读取相同的数据....

2 个答案:

答案 0 :(得分:1)

与实时数据库数据不同,Cloud Firestore符合the documentation

  

对于Android和iOS,默认情况下启用离线持久性。

因此,您在用户的设备上始终拥有Cloud Firestore数据库的本地副本。这意味着用户将能够在设备脱机时查询数据库。

  

Firebase始终查询服务器或从本地副本返回?

如果数据库中的数据不断变化并不重要,当用户在线时,他将始终从服务器查询数据,当离线时,他将始终从缓存中查询数据。如果您正在考虑更改此行为,则需要在未连接到服务器时无法停止从缓存中检索数据,因为您无法强制从缓存中检索数据您已连接到服务器。

  

Firebase数据库是基于交易的

当您谈论Firestore Transactions时,并不意味着您将多次阅读相同的数据(文档)。但是如果你打算使用交易,你需​​要记住一些事情。关于你的再生,其中最重要的是:

  

当客户端离线时,交易将失败。

因此,离线使用不支持交易,也无法对其进行缓存或保存以供日后使用。这是因为事务绝对需要与服务器进行往返通信,以确保事务中的代码成功完成。

答案 1 :(得分:0)

适用于Android的Firestore SDK默认启用local cache。如果服务器上没有更新,则读取操作将来自缓存。