Wie man mit Firebase spielt, um die Kontrolle über die Bandbreite zu behalten

Nach einigen Wochen der Arbeit mit Firebase und ein wenig "what da fuk" habe ich ein paar einfache Tipps gesammelt, die Ihnen helfen, etwas Bandbreite zu sparen.

Sie scheinen jetzt offensichtlich zu sein, haben es aber nicht getan, als wir anfingen, mit Firebase zu arbeiten.

Machen Sie sich mit dem Datenbank-Profiler vertraut

Das Datenbank-Profiler-Tool ist Teil der Firebase-CLI. Es protokolliert alle mit Ihrer Datenbank verbundenen Aktivitäten und gibt Ihnen detaillierte Berichte. Ein Bericht enthält Informationen zur Antwortzeit, zu heruntergeladenen und hochgeladenen Bytes und zu nicht indizierten Abfragen, die sich auf die Leistung der Anwendung auswirken können.

Je früher Sie es verwenden, desto besser ist es für Ihre Anwendung (und für Ihre Sicherheit;)).

Weitere Informationen zum Profiler-Tool finden Sie in der offiziellen Dokumentation.

Aktivieren Sie das lokale Caching

Aktivieren Sie die Festplattenpersistenz, um Daten nicht bei jedem Einschalten der App herunterzuladen. Danach speichert Firebase eine lokale Kopie der Datenbank und ruft nur Informationen zu neuen, geänderten oder gelöschten Elementen ab. Sie können die Daten auch offline abfragen.

Weitere Informationen zu Offline-Funktionen finden Sie in der offiziellen Dokumentation.

Indizieren Sie Ihre Daten

Wenn Sie die Daten häufig anhand eines bestimmten Felds filtern oder sortieren, sollten Sie darüber nachdenken, einen Index hinzuzufügen. Diese einfache Operation verbessert nicht nur die Leistung Ihrer Abfragen, sondern spart auch Bandbreite, da der Client bei nicht indizierten Abfragen alle Daten für einen bestimmten Knoten herunterlädt und die Abfrage nur dann auf diesem ausführt.

Weitere Informationen zur Datenindizierung finden Sie in der offiziellen Dokumentation.

Stellen Sie sicher, dass Sie den richtigen Listener verwenden, der den entsprechenden Knoten abhört

Firebase bietet Ihnen zwei Arten von Listenern:

  • value listeners, mit dem Sie auf Änderungen am angegebenen Knoten (und seinen untergeordneten Knoten) warten können
  • Untergeordnete Listener (Kind hinzugefügt, Kind geändert, Kind entfernt, Kind verschoben), mit denen Sie auf Änderungen an den untergeordneten Knoten warten können

Klingt so, als ob sie dasselbe tun, oder? Nicht genau.

Was ist der Unterschied?

Der Wertelistener wird jedes Mal ausgelöst, wenn sich die Daten auf dem angegebenen Knoten ändern, und gibt alle Daten an diesem Speicherort zurück, einschließlich der untergeordneten Daten.

Der untergeordnete Listener wird jedes Mal ausgelöst, wenn das untergeordnete Element auf dem angegebenen Knoten hinzugefügt, geändert, entfernt oder verschoben wird, und gibt nur die Daten des verarbeiteten untergeordneten Elements zurück.

Was ist die Schlussfolgerung?

Der Wertelistener sollte nur für die tiefsten Knoten verwendet werden, die tatsächlich primitive Typen darstellen. Verwenden Sie andernfalls den untergeordneten Listener.

Weitere Informationen zum Abrufen von Daten finden Sie in der offiziellen Dokumentation.

Vermeiden Sie das Herunterladen von Daten, wenn Sie sie nicht benötigen

Wenn Sie Daten über die REST-API schreiben, gibt Firebase die Antwort zurück, die die gerade gesendeten Daten enthält. In den meisten Fällen müssen Sie diese Daten wahrscheinlich nicht abrufen.

Um zu verhindern, dass die gesamte Ausgabe heruntergeladen wird, fügen Sie den Anforderungsparametern einfach print = silent hinzu. Von diesem Moment an gibt der Server den Statuscode 204 No Content zurück.

Weitere Informationen zu den Druckparametern finden Sie in der offiziellen Dokumentation.

Zu guter Letzt

Lesen Sie die Dokumentation immer sorgfältig durch;)

Hast du noch andere Tipps? Fühlen Sie sich frei, sie in Kommentare zu setzen. Es wird toll darüber zu reden :)