Firebase侦听器的读取次数是否比正常情况下多';快照';?

Firebase侦听器的读取次数是否比正常情况下多';快照';?,firebase,google-cloud-firestore,Firebase,Google Cloud Firestore,我想知道firebase侦听器是否会导致比从firestore数据库获取的“正常”快照更多的读取。我假设监听器必须不断检查数据库中是否有新的内容,因此这将增加我应用程序的读取量。从Firestore检索数据有两种方法: 允诺 听众 当您使用promise withget()方法时,您正在向服务器发送延迟请求。而侦听器方法打开一个连接通道,该通道在每次更改时实时检索信息。(这并不意味着每次都有这样一个流程提出请求) 当您使用侦听器策略访问数据时,您正在打开一个通信通道,当然,这会消耗连接资源。

我想知道firebase侦听器是否会导致比从firestore数据库获取的“正常”快照更多的读取。我假设监听器必须不断检查数据库中是否有新的内容,因此这将增加我应用程序的读取量。

从Firestore检索数据有两种方法:

  • 允诺
  • 听众
当您使用promise with
get()
方法时,您正在向服务器发送延迟请求。而侦听器方法打开一个连接通道,该通道在每次更改时实时检索信息。(这并不意味着每次都有这样一个流程提出请求)

当您使用侦听器策略访问数据时,您正在打开一个通信通道,当然,这会消耗连接资源。但是您可以
取消订阅它:检查A
get()
并不一定比快照侦听器更昂贵。get和listen之间的区别归结为这样一个事实:get将准确地读取文档一次,而listen将至少读取一次,只要侦听器处于活动状态,每次更改该文档都会导致另一次读取

如果侦听器保持活动状态,并且文档在活动状态下随时间变化,则侦听器只会导致更多的读取计费


随着时间的推移,您可以使用多个get来轮询文档,但是每一个get都将花费读取一个文档的成本,即使文档没有更改。因此,您必须自己确定获取文档更新的最佳方式,甚至您是否需要更新。

这实际上并不是对幕后情况的准确描述。从单个应用程序对Firestore的所有访问都是通过托管套接字进行的,在托管套接字中,所有读取和写入都通过该套接字进行管道传输。@DougStevenson你说得对。我刚刚编辑了我的答案以便更清楚。