【问题标题】:Firebase: First write is slowFirebase:第一次写入很慢
【发布时间】:2018-11-15 18:16:12
【问题描述】:

目前正在使用 ionic 开发混合移动应用。当应用程序启动并且用户第一次写入实时数据库时,它总是延迟大约 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();
});

【问题讨论】:

  • 您的用户是在您打开应用程序时进行身份验证,还是仅在您第一次调用时进行身份验证?
  • @ChristopheGudlake 用户已经登录。
  • 他们可能会关闭测功机并在活动开始后重新打开它。
  • @ChristopheGudlake:您链接的问题是关于启动 Cloud Functions 所需的时间,而这个问题是关于实时数据库的。虽然两者都是 Firebase 的一部分,但它们完全不同。例如:Firebase 数据库实例没有“旋转”,我怀疑缓存会导致这种差异。
  • 请更新您的问题以包含minimal, complete code that reproduces the problem

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


【解决方案1】:

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

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

其中每一个都可能需要多次往返,因此即使您距离服务器只有几百毫秒,它也会加起来。

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

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

【讨论】:

  • 作为一个不熟练的网络开发人员可以看到观看简短视频示例的好处
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-27
  • 2017-07-23
  • 2017-05-23
  • 1970-01-01
相关资源
最近更新 更多