【问题标题】:Firebase REST API persistent connection, speed optimisationFirebase REST API 长连接,速度优化
【发布时间】:2016-02-02 09:05:49
【问题描述】:

使用 Firebase JavaScript 库在循环中检索多个文档几乎与检索一个文档一样快。不管是不是感谢websocket的别的什么。

对 REST Api 执行相同操作会线性缓慢。每个请求只需要不到一秒,10 个 GET 请求在我的机器上大约需要 9 秒。将“Connection”标头设置为“keep-alive”并不会提高速度。

鉴于来自 Firebase 文档的 quote,我想知道如何通过 REST Api 优化多个查找请求的速度。

单独查找每条记录真的可以吗?是的。 Firebase 协议使用 Web 套接字,客户端库对传入和传出请求进行了大量内部优化。在我们进入数以万计的记录之前,这种方法是完全合理的。事实上,下载数据所需的时间(即字节数)超过了其他有关连接开销的问题。

【问题讨论】:

  • 一秒钟是。你测量 JS 库的延迟是多少?

标签: firebase


【解决方案1】:

您可以将 node.js 中的 Firebase JavaScript SDK 用于后端功能以利用套接字。

例如,我使用 JavaScript API 在 firebase 中的 child_added 事件上发送 SMS。

var Firebase = require('firebase');

var ref = new Firebase('YOUR_FIREBASE_URL_REFERENCE');

ref.authWithCustomToken("YOUR_SECRET_TOKEN", function(error, aut$
        if (error) {
                console.log("Authentication Failed!", error);
        } else {
                console.log("Authenticated successfully with payload:", authData);
        }
});


var messageRef = new Firebase('https://cozywait.firebaseio.com/messages');

messageRef.orderByChild('status').equalTo('requested').on('child_added', function(snaps$
            console.log('Message notification sending to ', snapshot.val().number);
            initSendSMS(snapshot);

});

【讨论】:

  • 很好的答案。使用 Node.js 中的 JavaScript SDK 确实是让您的后端有效地与 Firebase 的 API 对话的好方法。
  • @FrankvanPuffelen,鉴于您来自 Firebase 团队,我知道这是目前实现高效后端->firebase 通信的最佳且唯一的方法。 REST Api 目前没有优化潜力,对吗?
  • 您可以在一个补丁中发送多个更新:firebase.com/blog/… 如果您不能使用 SDK,这可能是最好的选择。 SKD 保持开放连接,因此开销要少得多。在开销巨大的小动作上。
猜你喜欢
  • 2016-01-15
  • 2019-01-13
  • 2011-08-01
  • 2016-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多