1

我用以下代码测量了加载一个桶(包含 20-30 个小物品)的 Simperium 响应时间:

var simperium = new Simperium(simperiumAppID, { token: simperiumAuthData.access_token });
console.time("simperiumBucketInit");
var bucket = simperium.bucket("main");
bucket.on('error', function (errortype) {
  console.log("got error for bucket: "+errortype);
})
bucket.on('ready', function () {
  console.timeEnd("simperiumBucketInit");
});
bucket.start();
​

Bucket 加载时间一般为 1.5-3 秒,有点长,但可以接受。但有时需要 20-30 秒,有一次需要 5 分钟以上。这是全球现象吗?我正在使用免费套餐。付费层有更好的性能吗?

4

1 回答 1

2

过去一周 9/1 - 9/6 的性能问题可能是我们遇到的数据库问题的罪魁祸首。此后服务器已经升级,性能应该会更加流畅。

另一个可能的问题是与服务器的连接。Simperium JS 库包含并使用 SockJS。它尝试建立 websocket 连接,但有时这可能会失败,具体取决于网络/防火墙/浏览器。在这些情况下,它应该回退到使用常规的 http 轮询,但是这种故障转移可能需要长达 20 秒。

可以将选项直接传递给 SockJS 并使用 SockJS 选项来控制连接行为并强制使用轮询:

var simperium = new Simperium(simperiumAppID, { token: "",
    sockjs: {
        protocols_whitelist: ['xdr-polling', 'xhr-polling', 'iframe-xhr-polling', 'jsonp-polling']
        }
    });

关于免费与付费层级,付费/生产应用程序将拥有独立于免费应用程序的专用资源,因此它们应该具有更一致的性能。

于 2012-09-06T18:11:19.673 回答