【问题标题】:Data transferred during Firebase Realtime Database value event在 Firebase 实时数据库值事件期间传输的数据
【发布时间】:2018-10-09 01:56:40
【问题描述】:

当我在 Firebase 实时数据库中的某个位置添加 valueevent 时,是每次触发事件时在该位置传输的完整数据(即在那个位置更改值location) 还是 Firebase 维护一个本地副本并仅在内部接收更改的数据并从本地副本添加其余数据?

我在我的 react-native 应用程序中使用 Javascript SDK。例如,假设我在添加值更改处理程序的位置有以下数据

{
  "alarmAcknowledgements" : {
    "1539018000000" : {
      "-LO-1HsCjevE9M1R8vB3" : {
        "-LOJRLBaZv3PcoU72UQg" : {
          "response" : "Confirm",
          "timestamp" : 1539015009220
        },
        "-LOJW1eCZzd0T7YMxHTh" : {
          "response" : "Decline",
          "timestamp" : 1539016240020
        }
      }
    }
  }
}

我正在收听valuealarmAcknowledgements 的更改事件。如果将新条目添加到alarmAcknowledgements,是否会再次下载现有数据或仅下载新条目。

我问这个问题的原因是因为如果 Firebase 每次都在该位置接收到完整的数据并且该位置的数据量增加:

  1. 随着时间的推移,同步需要更多时间。

  2. 随着时间的推移,随着该位置的数据增加,我还会产生更多的带宽费用。

【问题讨论】:

  • 除了 Doug 的精彩回答:如果您想查看实际发生的情况,请打开浏览器的开发人员工具,转到“网络”选项卡,然后检查 Web Socket 流量。您可以准确地看到 Firebase 在那里发送和接收的数据。
  • @FrankvanPuffelen 感谢您的提示。

标签: javascript firebase firebase-realtime-database


【解决方案1】:

只要侦听器处于活动状态,任何已被侦听器下载的数据都将保留在任何内存中。如果数据未更改,则永远不会再次下载数据。

另外,如果您启用了磁盘持久性,如果缓存到磁盘的数据在服务器上没有更改,则不会再次下载。

【讨论】:

  • 我已经用一个例子更新了我的问题。我在我的 react-native 应用程序中使用 JS SDK,所以我没有启用磁盘持久性,因为它不受支持。您能否评论一下示例将下载哪些数据。
  • 答案不变。一般规则仍然适用。已在内存中的数据不会再次下载。
  • 太棒了。谢谢道格。
猜你喜欢
  • 1970-01-01
  • 2021-11-23
  • 1970-01-01
  • 1970-01-01
  • 2021-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-18
相关资源
最近更新 更多