【问题标题】:Does Firebase query everytime from serverFirebase 是否每次都从服务器查询
【发布时间】:2018-05-25 05:22:06
【问题描述】:

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

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

【问题讨论】:

    标签: java android firebase google-cloud-firestore


    【解决方案1】:

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

    对于 Android 和 iOS,默认启用离线持久化。

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

    Firebase 总是查询服务器还是从本地副本返回?

    不管你数据库中的数据是否不断变化,用户在线时总是从服务器查询数据,离线时总是从缓存中查询数据。如果您正在考虑更改此行为,您现在需要在未连接到服务器时停止从缓存中检索数据,因为您无法强制从缓存中检索数据,而您已连接到服务器。

    Firebase 数据库是基于事务的

    当您谈论Firestore Transactions 时,这并不意味着您会多次读取相同的数据(文档)。但是,如果您要使用事务,则需要牢记一些事项。关于您的要求,其中最重要的一项是:

    客户端离线时事务会失败。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2021-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多