Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
加载消息的性能-Firebase聊天应用程序Swift_Swift_Firebase_Firebase Realtime Database_Chat - Fatal编程技术网

加载消息的性能-Firebase聊天应用程序Swift

加载消息的性能-Firebase聊天应用程序Swift,swift,firebase,firebase-realtime-database,chat,Swift,Firebase,Firebase Realtime Database,Chat,我的应用程序中现在有消息,但我正在努力提高性能。我想知道像Facebook messenger这样的应用程序是如何从数据库中加载消息的。我的Firebase结构目前看起来像这样。我使用扇出方法从这个节点(我从另一个节点读取)检索messageID下的消息 我假设Facebook加载了一部分消息,每次用户向上滚动加载消息的顶部(索引0?),它都会加载另一部分消息。因为我使用的是Firebase数据库,我的MessageID是按照发送的时间戳的顺序排列的,所以我最近的消息位于例如userID1节点的

我的应用程序中现在有消息,但我正在努力提高性能。我想知道像Facebook messenger这样的应用程序是如何从数据库中加载消息的。我的Firebase结构目前看起来像这样。我使用扇出方法从这个节点(我从另一个节点读取)检索messageID下的消息

我假设Facebook加载了一部分消息,每次用户向上滚动加载消息的顶部(索引0?),它都会加载另一部分消息。因为我使用的是Firebase数据库,我的MessageID是按照发送的时间戳的顺序排列的,所以我最近的消息位于例如userID1节点的底部。我会使用querylimited(tolast:100)加载最近的100条消息,然后每次用户到达顶部时使用querylimited(tolast:100*x)吗?(x作为计数器)

当加载额外的100条消息时,收集视图将保持其当前位置还是无意中滚动到顶部

这种仅查询Firebase数据子集的过程是否会降低成本并提高性能?它会忽略其他messageid吗?通常,当您在Firebase中查询数据子集时,是否会因为它只查看该数据子集而更快

messages
  userID1
    -messageID1
      fromId
      text
      timestamp
      toId
   -messageID2
   -messageID3