gpt4 book ai didi

android - 即使本地缓存可用且未更改,Firebase 单值监听器也会调用服务器

转载 作者:行者123 更新时间:2023-12-03 21:34:31 27 4
gpt4 key购买 nike

我的 Firebase 数据库有 setPersistenceEnabled=true。离线时,所有监听器都可以正常工作并从本地缓存中获取数据。

但是,在线时,每次我在同一节点上使用 addListenerForSingleValueEvent 时,Firebase 都会进行网络调用,即使我有本地缓存​​并且服务器上没有任何更改。

我在将监听器附加到的节点上有两个项目,在将日志级别设置为调试后,我看到以下报告。每次我在线使用监听器时,都会重复此网络 Activity ,即使在亚秒级延迟内也是如此。我的理解是,如果 Firebase 有本地数据,则不会进行服务器调用。任何同步检查都可能在后台进行,并具有高效的网络使用率。

conn_18 - received data message: {r=20, b={s=ok, d={}}}
conn_18 - received data message: {r=21, b={s=ok, d=}}



我正在尝试积极减少我的应用程序的网络使用量,任何停止/减少 Firebase 网络 Activity 的建议都会非常有帮助。

最佳答案

我自己一直在研究这个。
据我所知,您遇到的第二个电话只是网络说“嘿,没有更新”,并且您无需为任何阅读付费。
至于减少网络 Activity ,我认为这就是它的工作方式,以及你希望它如何工作(它是听众的实际收听部分)。如果您不想这样,请使用 getDocument 调用,而不是监听器。
这是基于几件事:

  • 当您查看 snapshot.metadata.isFromCache (iOS SDK) 进行查询时,调用将出现两次。首先来自缓存,然后来自服务器。但是,如果您在 snapshot.documentChanges 下打印一条语句,则只会打印缓存的调用。
  • 我做了一个实验,在 iOS 中重新加载 View 约 20 次。我还对我的数据进行了一些小改动。然后我等了 5-10 分钟,然后查看了使用情况:https://console.cloud.google.com/firestore/usage .我的总阅读次数增加了 3,这意味着我只需为更新付费。多次重新加载 View 不收费。
  • 关于android - 即使本地缓存可用且未更改,Firebase 单值监听器也会调用服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37889170/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com