fix(sw): network-first + 3s timeout statt SWR fuer Daten
All checks were successful
Build & Publish Docker Image / build-and-push (push) Successful in 30s
All checks were successful
Build & Publish Docker Image / build-and-push (push) Successful in 30s
SWR lieferte bei jedem Cache-Hit sofort die alte Antwort und aktualisierte das Cache nur fuer den naechsten Request. Folge: UI zeigte stale Daten, frische Daten erst nach Refresh. Neu: network-first mit 3 s Timeout-Fallback. Netz gewinnt bei frischer Antwort; Timeout oder Netzwerk-Fehler fallen auf Cache zurueck. Pre-Cache-Logik (runSync) bleibt unveraendert, Shell und Bilder bleiben cache-first.
This commit is contained in:
@@ -120,11 +120,11 @@ Bei Schema-Änderung:
|
||||
|
||||
- **Pre-Cache** (alle Rezepte + Bilder beim Initial-Sync), über paginierten Fetch von `/api/recipes/all`.
|
||||
- **Delta-Sync** beim App-Start (diff vs. Cache-Manifest, nur Delta laden).
|
||||
- **Drei Cache-Strategien** (dispatcht per `resolveStrategy`): Shell = cache-first, Daten = SWR, Bilder = cache-first.
|
||||
- **Drei Cache-Strategien** (dispatcht per `resolveStrategy`): Shell = cache-first, Daten = network-first mit 3 s-Timeout-Fallback auf Cache, Bilder = cache-first.
|
||||
- **Message-Protokoll** (`sync-start`, `sync-progress`, `sync-done`, `sync-error`) zwischen SW und Client.
|
||||
|
||||
Reine Logik-Einheiten (testbar, Unit-Tests in `tests/unit/`):
|
||||
- `src/lib/sw/cache-strategy.ts` — `resolveStrategy({url, method})` → `'shell' | 'swr' | 'images' | 'network-only'`
|
||||
- `src/lib/sw/cache-strategy.ts` — `resolveStrategy({url, method})` → `'shell' | 'network-first' | 'images' | 'network-only'`
|
||||
- `src/lib/sw/diff-manifest.ts` — `diffManifest(current, cached)` → `{toAdd, toRemove}`
|
||||
|
||||
Client-Stores (SSR-safe via typeof-Guards):
|
||||
|
||||
@@ -155,7 +155,7 @@ Kochwas ist eine installierbare PWA. Erkennbar an:
|
||||
|
||||
Caches im Browser (siehe DevTools → Application → Cache Storage):
|
||||
- `kochwas-shell-<version>` — App-Shell (JS/CSS/Static-Icons), cache-first
|
||||
- `kochwas-data-v1` — Rezept-HTMLs + API-JSON (SWR)
|
||||
- `kochwas-data-v1` — Rezept-HTMLs + API-JSON (network-first, 3 s Timeout → Cache-Fallback)
|
||||
- `kochwas-images-v1` — Bilder (cache-first)
|
||||
- `kochwas-meta` — Cache-Manifest (Liste der gecachten Rezept-IDs unter `/__cache-manifest__`)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user