-80% Supabase Egress dank intelligentem Cache
Ein böses Erwachen, als ich mein Supabase-Dashboard ansah. Der Egress stieg viel schneller als meine Nutzerzahl. Jedes Öffnen der App löste Dutzende von Anfragen aus.
Die Diagnose: N+1 und unveränderte Daten
Erster Übeltäter: die ViewStats. 20 angezeigte Aufgaben = 20 individuelle Anfragen. Zweiter Übeltäter: Daten wurden bei jeder Navigation vollständig neu geladen, selbst wenn sich nichts geändert hatte.
ContentCacheService
Zweistufiger Cache: L1 (Map im Speicher, sofortiger Zugriff) und L2 (AsyncStorage, bleibt nach Neustarts erhalten). Der Ablauf: L1 → L2 → Supabase → in L1 und L2 speichern.
Supabase Realtime
Zwei Channels (content-cache-tasks und content-cache-memos), die den Cache bei Datenänderungen invalidieren. Die React-Komponenten rendern sich mit den neuen Daten neu, ohne zusätzliche Anfrage.
Batch ViewStats
getTaskViewStatsBatch(taskIds) ruft die Statistiken von 20 Aufgaben in einer einzigen Anfrage ab, anstatt in 20.
Die Auswirkung
Der Egress ist um 80 bis 90 % gesunken. Der Bonus: Die App ist spürbar schneller. Der Feed wird sofort aus dem Cache angezeigt. Kostenoptimierung und UX-Optimierung sind oft dieselbe Arbeit.