Firebase DocumentReference.get()查询仅在Safari中非常慢

问题描述 投票:0回答:1

我正在使用Firebase / Firestore 7.14.4将数据存储在单页Web应用程序中。在Chrome,Firefox和其他应用程序上,该应用程序运行良好。但是,在Safari中,在Mac和iOS上,登录到DocumentReference.get()后的第一个调用都需要花费几分钟和几分钟的时间,或者甚至永远无法完成。发生这种情况:

  • 当所讨论的文档很大(1 MB)
  • 当相关文档很小时,只有两个日期字段
  • 清除所有缓存后
  • 当尚未清除缓存时

产生此问题的代码再简单不过了。

firebase.auth().onAuthStateChanged( async (user) => {
  if( user ) {
    const userDoc = db.collection( 'users' ).doc( user.uid );
    const docSnapshot = await userDoc.get();    // <- .get() never returns
    // ...
  }
}

同样,仅在Mac和iOS Safari上会发生这种情况,在Chrome或Firefox中不会发生。

还有其他人看到过这样的东西吗?

firebase google-cloud-firestore safari database-performance
1个回答
0
投票

我刚刚在Chrome和Safari中都运行了这个简单的示例:

var start = Date.now();
firebase.auth().signInAnonymously();

firebase.auth().onAuthStateChanged(function(user) {
  if (user) {
    firebase.firestore().doc("61881285/me").get().then(function(doc) {
      console.log(`Signed in and got doc in ${Date.now()-start}ms`);
      console.log(doc.id, '=>', doc.data());
    });
  }
});

jsbin

结果:

  • Chrome:“登录并在528毫秒内获得文档”
  • Safari:“登录并在327ms内获得文档”

让我知道您在运行jsbin时是否得到不同的结果。

如果您的代码获得了不同的结果,但以上内容却没有,我很乐意看到一个类似的示例,我们可以运行该示例来重现这些结果。

© www.soinside.com 2019 - 2024. All rights reserved.