3

当通过回调更新对象时,它的工作方式是否相同ref.on('value', ...

我试图在 Chrome 开发工具中自己弄清楚,但没能做到。

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

4

1 回答 1

4

写入数据时,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,则您可能应该分解数据并仅写入相关部分。

于 2013-01-11T23:24:08.770 回答