Speicherverbrauch im Browser optimieren (Charts, D3-Sim, Polling, Listen) #183
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Beobachtung: Auf einigen Seiten (vermutlich
/auswertungen,/stimmverhalten,/v2/cluster,/aktuelle-themen) baut sich der Browser-Speicher merklich aufoder bleibt hoch nach Tab-Wechsel.
Mögliche Quellen (vor der Diagnose)
chart.destroy()vor neuem
new Chart(...)sollte vorhanden sein, aber nicht durchgängiggeprüft.
/v2/cluster— Drag-Handler, Tick-Listener.Sim wird beim Wechsel zu anderem Cluster nicht explizit beendet.
/api/queue/statusalle 5 s,/api/admin/standalle 30 s.setInterval-Handle wird beim Verlassen der Page ggf. nicht gecleart.pollQueueUntilDrained) — prüfenob es bei Tab-Wechsel cleared wird.
Diagnose-Plan
Mitigations-Kandidaten
chart.destroy()konsequent +_svCharts = {}reset bei Tab-Wechsel.sim.stop()beim Verlassen Cluster-Detail.Map<elementId, intervalHandle>und cleanupbei
beforeunload+ Tab-Switch.Akzeptanz
Erste Fix-Runde durch (commit
481a791):/auswertungenZeitreihe-Modal: vor Re-Render_zeitreiheModalChart.destroy(), beim Modal-Close + Escape ebenfalls._currentForceSimglobal,sim.stop()beim Verlassen Detail-View und vor neuem Render.visibilitychange: queue_widget (5 s), admin_stand (30 s), admin_queue (5 s) — wenn Tab versteckt, kein Poll.Heap-Snapshot-Verifikation (Playwright headless, 5 Iterationen):
Beide unter dem 5-MB-Akzeptanzkriterium. Cluster-Detail ist sogar negativ —
sim.stop()+ GC räumen sauber auf.Was noch offen ist (Folge-Iteration falls nötig):
Pragmatische Mitigations umgesetzt (Commit
ad73c82):Bestehende Maßnahmen unverändert: chart.destroy() vor jedem neuen Chart in /auswertungen + /v2/admin/stand, sim.stop() in cluster.html, visibilitychange-Pause für Polling.
Nicht erschöpfend ohne konkrete Heap-Snapshots: Lazy-Render lange News-/Drucksachen-Listen via IntersectionObserver, detaillierte Detached-DOM-Analyse pro Seite. Wenn Memory-Drift weiter spürbar bleibt, brauchen wir DevTools-Heap-Vergleich; daraus ergeben sich konkrete weitere Fixes.