在 Firebase 实时数据库值事件期间传输的数据



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

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

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

我正在alarmAcknowledgements收听value更改事件.如果将新条目添加到alarmAcknowledgements中,是再次下载现有数据还是仅下载新条目。

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

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

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

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

此外,如果启用了磁盘持久性,则缓存到磁盘的数据在服务器上保持不变时不会再次下载。