[Performance] saveState debouncen + XLSX-Script defer/lazy-load #11

Closed
opened 2026-06-03 14:10:02 +02:00 by ferdi2go · 1 comment
Owner

Schweregrad: LOW

Dateien: js/app.js:33-40 (aufgerufen u.a. js/employees.js:191, js/calendar.js:270), index.html:11

Problem: saveState schreibt bei jedem Change synchron das komplette JSON. Das ~500 KB XLSX-Script blockiert im <head> das Parsing, obwohl nur für Im-/Export gebraucht.

Fix: saveState um ~300–500 ms debouncen; XLSX-Script defer setzen oder per import() erst bei Bedarf laden.

**Schweregrad:** LOW **Dateien:** `js/app.js:33-40` (aufgerufen u.a. `js/employees.js:191`, `js/calendar.js:270`), `index.html:11` **Problem:** `saveState` schreibt bei jedem Change synchron das komplette JSON. Das ~500 KB XLSX-Script blockiert im `<head>` das Parsing, obwohl nur für Im-/Export gebraucht. **Fix:** `saveState` um ~300–500 ms debouncen; XLSX-Script `defer` setzen oder per `import()` erst bei Bedarf laden.
ferdi2go added the severity/lowperformance labels 2026-06-03 14:10:02 +02:00
Author
Owner

Behoben in 0efb9cb: saveState debounced (~400 ms), bündelt schnelle Änderungen; ausstehender Write wird bei beforeunload und visibilitychange→hidden geflusht (kein Verlust der letzten Änderung, konsistent mit #4). SheetJS-Script mit defer (nicht mehr render-blockierend); typeof XLSX-Guard deckt den Lade-Fall ab. Headless ohne Fehler verifiziert.

Behoben in `0efb9cb`: `saveState` debounced (~400 ms), bündelt schnelle Änderungen; ausstehender Write wird bei `beforeunload` und `visibilitychange`→hidden geflusht (kein Verlust der letzten Änderung, konsistent mit #4). SheetJS-Script mit `defer` (nicht mehr render-blockierend); `typeof XLSX`-Guard deckt den Lade-Fall ab. Headless ohne Fehler verifiziert.
Sign in to join this conversation.