当我说“转移”时,我指的是可计费的转移数据,我相信这只是下载的数据。
让我们说您正在听ref('/posts/').onValue()
,然后您打电话给ref('/posts').once()
,因为客户端已经具有最新版本的客户端,因此Realtime Database知道不通过网络传输任何数据吗?数据?
现在,假设您正在收听ref('/posts/').onValue()
,并且发现了新的更新。实时数据库是否传输增量或整个文档?
现在可以说您正在做ref('/posts/').orderByChild('timestamp').limitToLast(10)
之类的过滤器,并且您的/posts/
引用有500个条目。实时数据库会将10个孩子转移到客户端还是全部500个孩子?
现在可以说您在Realtime Database中注册了数千名侦听器,您是否需要为设置和删除侦听器付费?
注意:我不确定这是否应该是多个问题,或者是否不应该将其发布在Stack Overflow上。这就是堆栈新手的不确定性。
答案 0 :(得分:1)
如果您同时将多个侦听器附加到一个位置,则该位置的数据将仅传输一次。
当您要监听的较大节点的一部分有更新时,Firebase会尝试仅通过网络发送增量。确切数据的大小取决于节点的总大小及其下的更新。
如果在查询的属性上有索引,则仅传输查询结果。如果您在该属性上没有索引,则Firebase客户端将记录错误,在该位置传输所有数据并过滤客户端。
请注意,有一些工具可以了解这些内容: