You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Az oldal félig telepíthető: van site.webmanifest (display: standalone, ikonok, theme_color, start_url), tehát a böngésző felajánlja a telepítést — de service worker nincs, tehát:
telepítés után is minden indítás hálózatot igényel, offline egy hibaoldal jön
a visszatérő látogató nem kap azonnali betöltést, pedig a bundle és a betűkészletek hónapokig változatlanok
a standalone megjelenítés így többet ígér, mint amit az oldal tud
Javaslat
vite-plugin-pwa (Workbox alapú) a publikus app buildjébe, generateSW stratégiával — kézzel írt service workert itt nem érdemes fenntartani.
Cache-stratégiák tartalomtípus szerint:
hashelt bundle és betűfájlok: CacheFirst (a fájlnév hordozza a verziót)
/api/attachments/*: CacheFirst hosszú TTL-lel — a slug immutable, a válasz ma is max-age=31536000, immutable
olvasó API (/api/works stb.): NetworkFirst rövid timeouttal, hogy offline a legutóbbi tartalom látszódjon
a HTML: NetworkFirst. Ez a kritikus pont: a szerver oldalanként más head-et ír (SpaShell), tehát egy cache-elt HTML rossz oldalhoz tartozó metaadatot és — a SEO: nyelv az URL-ben (/en/...) és hreflang #55 után — rossz nyelvet szolgálhatna ki. CacheFirst a HTML-re itt hibás lenne.
Offline fallback oldal (a NotFoundView / StatusPanel mintájára), hogy hálózat nélkül is a site arculata jöjjön, ne a böngésző hibaoldala.
Frissítési folyamat: registerType: "prompt" és egy „új verzió elérhető, újratöltés" jelzés. Automatikus skipWaiting nélkül nem cserélődik a worker, azzal pedig a futó oldal alatt cserélődik a bundle — a kérdést el kell dönteni, nem alapértékként hagyni.
Analytics kölcsönhatás: a trackView beacon keepalive: true-val megy; a service worker ne cache-elje vagy ismételje meg a POST /api/activity/view kéréseket, különben hamis megtekintések keletkeznek.
A ?notrack=1 kizárás localStorage-ban él, azt a service worker nem érinti — de a viselkedést telepített appban is érdemes ellenőrizni.
Fejlesztői kellemetlenség: egy rosszul beállított service worker a legnehezebben debuggolható hibaosztály (elavult bundle, ami nem frissül). Érdemes csak production buildben regisztrálni, és a deploy/RUNBOOK.md-be beírni, hogyan lehet kényszerítve kiüríteni.
Érintett fájlok
portfoliocms.client/vite.config.ts, package.json
portfoliocms.client/src/main.ts (regisztráció)
új offline fallback komponens a src/views/ alatt
portfoliocms.client/public/site.webmanifest
PortfolioCMS.Core/Middleware/SecurityHeadersMiddleware.cs (ha a CSP-t érinti)
Jelenség
Az oldal félig telepíthető: van
site.webmanifest(display: standalone, ikonok,theme_color,start_url), tehát a böngésző felajánlja a telepítést — de service worker nincs, tehát:standalonemegjelenítés így többet ígér, mint amit az oldal tudJavaslat
vite-plugin-pwa(Workbox alapú) a publikus app buildjébe,generateSWstratégiával — kézzel írt service workert itt nem érdemes fenntartani.CacheFirst(a fájlnév hordozza a verziót)/api/attachments/*:CacheFirsthosszú TTL-lel — a slug immutable, a válasz ma ismax-age=31536000, immutable/api/worksstb.):NetworkFirströvid timeouttal, hogy offline a legutóbbi tartalom látszódjonNetworkFirst. Ez a kritikus pont: a szerver oldalanként más head-et ír (SpaShell), tehát egy cache-elt HTML rossz oldalhoz tartozó metaadatot és — a SEO: nyelv az URL-ben (/en/...) és hreflang #55 után — rossz nyelvet szolgálhatna ki.CacheFirsta HTML-re itt hibás lenne.NotFoundView/StatusPanelmintájára), hogy hálózat nélkül is a site arculata jöjjön, ne a böngésző hibaoldala.registerType: "prompt"és egy „új verzió elérhető, újratöltés" jelzés. AutomatikusskipWaitingnélkül nem cserélődik a worker, azzal pedig a futó oldal alatt cserélődik a bundle — a kérdést el kell dönteni, nem alapértékként hagyni.trackViewbeaconkeepalive: true-val megy; a service worker ne cache-elje vagy ismételje meg aPOST /api/activity/viewkéréseket, különben hamis megtekintések keletkeznek.?notrack=1kizáráslocalStorage-ban él, azt a service worker nem érinti — de a viselkedést telepített appban is érdemes ellenőrizni.deploy/RUNBOOK.md-be beírni, hogyan lehet kényszerítve kiüríteni.Érintett fájlok
portfoliocms.client/vite.config.ts,package.jsonportfoliocms.client/src/main.ts(regisztráció)src/views/alattportfoliocms.client/public/site.webmanifestPortfolioCMS.Core/Middleware/SecurityHeadersMiddleware.cs(ha a CSP-t érinti)deploy/RUNBOOK.md