我在Android应用中使用Cloud Firestore数据库。 (我正在使用Android SDK)。当应用程序启动时,我查询登录的用户数据,并且当文档说明时,副本存储在本地。
如果文档数据没有变化,当我查询.get文件时,Firebase会不会查询服务器或从本地副本返回?我问的原因是Firebase数据库是基于事务的,我不想多次不必要地读取相同的数据....
答案 0 :(得分:1)
与实时数据库数据不同,Cloud Firestore符合the documentation:
对于Android和iOS,默认情况下启用离线持久性。
因此,您在用户的设备上始终拥有Cloud Firestore数据库的本地副本。这意味着用户将能够在设备脱机时查询数据库。
Firebase始终查询服务器或从本地副本返回?
如果数据库中的数据不断变化并不重要,当用户在线时,他将始终从服务器查询数据,当离线时,他将始终从缓存中查询数据。如果您正在考虑更改此行为,则需要在未连接到服务器时无法停止从缓存中检索数据,因为您无法强制从缓存中检索数据您已连接到服务器。
Firebase数据库是基于交易的
当您谈论Firestore Transactions时,并不意味着您将多次阅读相同的数据(文档)。但是如果你打算使用交易,你需要记住一些事情。关于你的再生,其中最重要的是:
当客户端离线时,交易将失败。
因此,离线使用不支持交易,也无法对其进行缓存或保存以供日后使用。这是因为事务绝对需要与服务器进行往返通信,以确保事务中的代码成功完成。
答案 1 :(得分:0)
适用于Android的Firestore SDK默认启用local cache。如果服务器上没有更新,则读取操作将来自缓存。