在这些用例中,Firebase读取了多少数据

时间:2019-08-23 20:33:29

标签: firebase

我正在创建一个聊天应用程序,最初我将使用免费的Firebase计划开始(或尝试),该计划每天最多允许50.000个读数。该应用程序列出了对话,当您打开对话时,消息会显示在列表中,并从实时数据库firebase中检索出来。

  1. 如果用户打开包含1.000条消息的对话,是否会计算1.000个读数?

  2. 在消息活动中调用onStop时,我从消息中删除了valueEventListener侦听器。因此,如果用户关闭消息屏幕并重新打开50次,是否会生成50.000个读数并且免费计划达到了极限?

1 个答案:

答案 0 :(得分:0)

  
      
  1. 如果用户打开包含1.000条消息的对话,是否会计算1.000个读数?
  2.   

Firebase实时数据库不计算您阅读的消息数。如果您这样认为,可能会将它与Cloud Firestore混淆。

Firebase实时数据库根据从服务器发送到客户端上各种侦听器的数据量收费。因此,如果您收听全部1000条消息,则需要为全部1000条消息的数据量付费。但是,例如,如果您创建一个仅侦听最近100条消息的查询,则只需要为这100条消息传输的数据量付费。

  
      
  1. 在消息活动中调用onStop时,我从消息中删除了valueEventListener侦听器。因此,如果用户关闭消息屏幕并重新打开50次,是否会生成50.000个读数并且免费计划达到了极限?
  2.   

这取决于您配置应用程序的方式。默认情况下,只有将侦听器附加到该数据后,数据才会保留在内存中。因此,这意味着如果您附加了最后一个/唯一的侦听器,则数据将从内存中删除,并且确实在您附加新的侦听器时必须从服务器重新加载数据。

但是,您可以在客户端中启用磁盘持久性,这意味着它除了将数据保留在内存中之外还将数据持久化到磁盘缓存中。分离侦听器时的行为是相同的:它已从内存中删除。但是,当您连接新的侦听器时,在这种情况下,Firebase客户端将首先加载其在磁盘缓存中的数据,然后仅向服务器请求已更改的数据。这通常会大大减少数据传输,但是很难说出精确度。

请注意,磁盘持久性与addListenerForSingleValueEvent结合得很好,因此仅在使用addChildEventListeneraddValueEventListener时才应使用它。无论如何,这是迄今为止从Firebase获取数据的最惯用的方法,因此对使用此方法进行的任何更改也可能也会对您的用户体验有所帮助。