Firebase节点同步时,是将完整的新值发送到服务器,还是仅发送差异?

Firebase节点同步时,是将完整的新值发送到服务器,还是仅发送差异?,firebase,Firebase,当一个对象通过回调(如ref.on('value'),…)进行更新时,它的工作方式是否相同 我试图在自己的Chrome开发工具中找到答案,但没有成功 这对我来说很重要,因为我正在开发一个用户可能存储大量文本的应用程序。如果只通过网络发送差异,那么它会更加轻量级,而且我可以更频繁地同步。如果发送完整值,我不想这样做。写入数据时,Firebase服务器当前会发送所有数据如果你写了一个大的对象,然后用同一个对象重写整个对象,整个对象将通过网络发送(这在将来可能会改变,但这是当前的实现) 当将数据从服务

当一个对象通过回调(如
ref.on('value'),…
)进行更新时,它的工作方式是否相同

我试图在自己的Chrome开发工具中找到答案,但没有成功


这对我来说很重要,因为我正在开发一个用户可能存储大量文本的应用程序。如果只通过网络发送差异,那么它会更加轻量级,而且我可以更频繁地同步。如果发送完整值,我不想这样做。

写入数据时,Firebase服务器当前会发送所有数据如果你写了一个大的对象,然后用同一个对象重写整个对象,整个对象将通过网络发送(这在将来可能会改变,但这是当前的实现)

当将数据从服务器发送回其他客户端时,我们会进行一些优化,不会传输一些重复的数据

Firebase旨在允许您以粒度方式访问数据。我强烈建议您将地址添加到正在更改的数据中,并仅更新相关部分。例如:

//inefficient method:
ref.set(HUGE_BLOCK_OF_JSON);

//efficient method:
ref.child("a").child("b").child("c").set(SOME_SMALL_PIECE_OF_DATA);
当您将地址转换为一段数据时,只有这一小段数据被传输并重新广播到其他客户端


Firebase适用于真正的实时应用程序,在这些应用程序中,一旦数据发生更改,就会立即进行更新。如果出于性能原因,您发现自己有意将更改缓存一段时间,并将其保存为大blob,那么您可能应该分解数据,只编写相关部分。

因此,您建议使用仅包含一个文本块应该被任意分割成一个文本节点列表,并在客户端进行管理?很清楚,我不是指JSON(将JSON存储在一个节点中几乎就像是击败了firebase)我的意思是像一篇10页的文章,严格来说,这是一块流动的文本。是的,如果你将一个巨大的字符串设置为另一个巨大的字符串,它将向下发送整个新字符串,而不是一个差异。Firebase用于同步结构化数据,因此如果你有一块巨大的文本,你希望逐段同步/编辑,你应该尝试将其分解以合乎逻辑的方式。你正在尝试建立一个协作文本编辑器吗?如果是这样,我们可能能够帮助你。请给我发电子邮件:firebase.com的andrew。