Optimierung automatische Updates der Webanwendung bei Aktualisierung der Anwendung auf dem Server

This commit is contained in:
2026-08-10 11:04:00 +02:00
parent a917c5f64e
commit 7b99a2d4b5
5 changed files with 229 additions and 12 deletions

View File

@@ -329,11 +329,40 @@ stehenbleiben, die nie angekommen ist. Diese Stelle (`mutate()` in
Speichert nur die Programmdateien, **nicht** die API-Antworten. Eine veraltete
Liste aus dem Cache wäre schlimmer als gar keine. Das kontrollierte Vorhalten
der Daten übernimmt in Phase 4 IndexedDB.
der Daten übernimmt IndexedDB.
Bei Änderungen an den Dateien in `SHELL` muss `VERSION` in `sw.js` hochgezählt
werden, sonst behalten installierte Clients die alte Fassung.
### Aktualisierung installierter Apps
Eine installierte PWA wird oft wochenlang nicht vollständig geschlossen. Der
Browser lädt den Service Worker zwar im Hintergrund neu, aber der neue bleibt
im Wartezustand, bis alle Fenster geschlossen sind und die laufende Seite
arbeitet weiter mit dem alten JavaScript. Für den Nutzer sieht es aus, als käme
das Update nie an.
`web/html/js/update.js` löst das:
1. Nachfragen, ob etwas bereitliegt beim Zurückkehren in den Vordergrund,
bei Verbindungsrückkehr und alle 30 Minuten
2. Wenn ja: unten ein Hinweis mit „Jetzt neu laden" und einem Kreuz zum
Wegklicken
3. Auf Klick übernimmt der neue Service Worker, und über `controllerchange`
lädt die Seite **einmal** neu auch in weiteren offenen Fenstern
**`skipWaiting()` steht nicht mehr im `install`-Ereignis.** Genau dort war der
Fehler: Der neue Service Worker übernahm sofort die Kontrolle, während die
geladene Seite noch mit dem alten JavaScript lief gemischte Stände, und
aktualisiert wurde trotzdem erst beim nächsten vollständigen Schließen. Jetzt
wartet er, bis die Anwendung ihn ausdrücklich dazu auffordert.
**Kein ungefragtes Neuladen.** Ein erzwungener Neustart mitten in einer Eingabe
würde den halb getippten Artikelnamen verlieren. Die Daten selbst sind sicher
sie liegen in der Outbox , aber der Ärger wäre trotzdem da. Wer den Hinweis
wegklickt, bekommt die neue Fassung beim nächsten Start; das geschieht ohnehin,
sobald alle Fenster geschlossen sind.
### Auf dem Telefon installieren
Android/Chrome bietet „Zur Startseite hinzufügen" von selbst an. Bei iOS geht