当我在Firebase实时数据库中的某个位置添加一个value
事件时,是该事件每次触发时在该位置传输的完整数据(即值已更改)或Firebase维护本地副本,并在内部仅接收更改的数据,并从本地副本中添加其余数据?
我在我的本地应用程序中使用Javascript SDK。例如,假设我在添加值更改处理程序的位置有以下数据
{
"alarmAcknowledgements" : {
"1539018000000" : {
"-LO-1HsCjevE9M1R8vB3" : {
"-LOJRLBaZv3PcoU72UQg" : {
"response" : "Confirm",
"timestamp" : 1539015009220
},
"-LOJW1eCZzd0T7YMxHTh" : {
"response" : "Decline",
"timestamp" : 1539016240020
}
}
}
}
}
我正在听value
上的alarmAcknowledgements
更改事件。如果将新条目添加到alarmAcknowledgements
,将重新下载现有数据还是仅下载新条目。
我问这个问题的原因是因为Firebase是否每次都在该位置接收完整的数据,并且该位置的数据量增加了?
随着时间的推移,同步将花费更多时间。
随着位置上数据的增加,我还将招致更多的带宽费用。
答案 0 :(得分:3)
只要侦听器处于活动状态,任何已由侦听器下载的数据都将保留在任何内存中。如果数据不变,则永远不会第二次下载。
此外,如果启用了磁盘持久性,则在服务器上保持不变的情况下,缓存到磁盘的数据将不会再次下载。