Firebase:第一次写入很慢

时间:2018-11-15 18:16:13

标签: firebase firebase-realtime-database google-cloud-functions

当前正在开发使用离子技术的混合移动应用程序。当应用启动时,并且用户第一次写入实时数据库,它总是会延迟大约10秒钟或更长时间。但是任何后续写入几乎都是瞬时的(不到1秒)。

我的延迟计算基于在Firebase控制台中查看数据库。

这是一个已知问题,还是我做错了什么。请分享您的看法。

编辑:

写入操作是通过Firebase Cloud Function进行的。

这是对Firebase Cloud函数的调用

this.http.post(url+"/favouritesAndNotes", obj, this.httpOptions)
  .subscribe((data) => {
    console.log(data);
  },(error)=>{
    console.log(error);
  });

这是实际功能

 app.post('/favouritesAndNotes', (request, response) => {
  var db = admin.database().ref("users/" + request.body.uid);
  var favourites = request.body.favourites;
  var notes = request.body.notes;
  if(favourites!==undefined){
    db.child("favourites/").set(favourites);
  }
  if(notes!==undefined){
    db.child("notes/").set(notes);
  }
  console.log("Write successfull");
  response.status(200).end();
});

1 个答案:

答案 0 :(得分:5)

您第一次在客户端实例中与Firebase数据库进行交互时,客户端/ SDK必须做一些事情:

  1. 如果您使用的是身份验证,则需要检查其所拥有的令牌是否仍然有效,如果没有,请刷新它。
  2. 它需要找到数据库当前所在的服务器。
  3. 它需要建立一个Web套接字连接。

其中的每一个都可能需要多次往返,因此,即使您离服务器只有几百毫秒的路程,它的总和也会增加。

同一客户端的后续操作不必执行这些步骤,因此会更快。

如果您想查看实际情况,建议您查看浏览器的“网络”选项卡。对于实时数据库,我建议检查“网络”选项卡的“ WS / Web套接字”面板,您可以在其中查看实际的数据帧。