2016-09-30 20 views
0

私は火災基地3.4.1を使用し、反応した天然0.34.1。あまりにも反応が遅い火災基地

検索されたデータを受信するのがfirebaseから非常に遅いことに驚きました。

これは私の反応ネイティブテストコードです。

class test1 extends Component { 
    constructor(){ 
     super(); 

     let config = { 
      apiKey: "xxxxxxxxxxxxxx", 
      authDomain: "yyyyyyyy.firebaseapp.com", 
      databaseURL: "https://zzzzzz.firebaseio.com", 
     }; 

     Firebase.initializeApp(config); 

     this.rootRef = Firebase.database().ref(); 
     this.postRef = this.rootRef.child('posts'); 

     this.state = { 
      like : 'like : ', 
      comment : 'comment : ', 
     }; 

    componentWillMount(){ 
     console.debug('componentWillMount'); 
     let num = 0; 
     let time = new Date().getTime(); 
     this.postRef.orderByKey().limitToLast(10).once('value') 
     .then((postsnap) => { 
      console.debug(new Date().getTime() - time); 
      postsnap.forEach((postItem) => { 
       console.debug(num++); 
       console.debug(new Date().getTime() - time); 
       this.setState({ 
        like : this.state.like + postItem.child('like').numChildren() + ', ', 
        comment : this.state.comment + postItem.child('comment').numChildren() + ', ', 
       }); 
      }); 
     }); 
    } 

    render() { 
     return (
      <View style={styles.container}> 
       <Text> 
       {this.state.like} 
       </Text> 
       <Text> 
       {this.state.comment} 
       </Text> 
      </View> 
     ); 
    } 
} 

マイfirebaseデータベースの構造は、 「rootrefはちょうど6 '記事' は非常に簡単です。

componentWillMount 
8760 
0 
8761 
1 
8766 
2 
8767 
3 
8768 
4 
8769 
5 
8772 

君たちはfirebaseから速く検索データのための任意のアイデアを持っていますか?

+0

通常、データ取得のパフォーマンスは、要求したデータ量と、利用可能な帯域幅でデータを分割したデータの組み合わせです。あなたのReact Nativeセットアップに問題があるかもしれませんが、私たちがそれを行うことはできません。問題を再現する定期的なReact jsbin/jsfiddleを設定できますか? –

+0

接続に問題があるようです、と思います。 接続後の時間はありません。 –

答えて

0

シングルトンパターンを使用してReferenceを取得する方がずっと良いです。毎回Firebase.initializeAppを呼び出す代わりに、別のモジュールに入れてグローバルにします。そして、インスタンス化された参照をFirebase.database().ref()にエクスポートします。また、アプリの生涯を通じて使用してください。

とにかく、私はこのアプローチを使用しても、1ノードクエリ(node/key)のための最小ロード時間は〜200ミリ秒であり、これは実際には遅いことがわかりました。

関連する問題