通常、Firebase の使用を制限するためにデータをキャッシュする必要はありません。Firebase は、クライアント上で「アクティブな」データの独自のキャッシュを維持します。「アクティブ」とは、「オン」コールが未解決のデータとして定義されます。したがって、アクティブなデータの場合、追加の「on」または「once」呼び出しでは、データが既に読み込まれているため、ネットワーク トラフィックは必要ありません。
「firebaseのクエリ」の意味が完全にはわかりません。Firebase には、従来の意味でのクエリはありません。コールバックをアタッチするためのメソッドがあるだけです。Firebase から定期的にデータを取得するために「once()」関数を使用していますか? もしそうなら、これは非常に非効率的である可能性があります。Once は便利なメソッドであり、通常、アクセス頻度が非常に低いデータや、何らかの理由で開発者がリアルタイムで更新したくないデータにのみ使用する必要があります。once() の完了時に未解決のアクティブな「on」呼び出しがない場合、Firebase はそのデータのキャッシュをフラッシュし、その後の once() の呼び出しではサーバーへのラウンドトリップが必要になります。
最新バージョンのデータのローカル コピーに効率的に同期的にアクセスする方法が必要な場合は、次の方法をお勧めします。
var savedSnapshot = null;
dataRef.on("value", function(snapshot) {
savedSnapshot = snapshot;
});
//and then when you need to read the data
var theData = savedSnapshot.val()
単一の on() 呼び出しを維持することにより、Firebase は、必要なたびにすべてのデータをリロードするのではなく、変化が生じたときにネットワーク経由でデルタを送信するだけで、データを最新の状態に保つことができます。