feat: PWA-Feinschliff mit Service Worker und Offline-Seite
Drei Strategien: Poster und statische Dateien zuerst aus dem Zwischenspeicher, Seiten zuerst aus dem Netz, API-Aufrufe gar nicht. Ein Tracker, der veraltete Stände zeigt, wäre schlimmer als einer, der ehrlich sagt: gerade keine Verbindung. Schreibende Anfragen laufen nie über den Service Worker.
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
"use client";
|
||||
|
||||
import { useEffect } from "react";
|
||||
|
||||
/**
|
||||
* Meldet den Service Worker an.
|
||||
*
|
||||
* Nur in der Produktion: im Entwicklungsmodus würde ein Zwischenspeicher
|
||||
* dauernd veraltete Bündel ausliefern und jede Änderung verschleiern.
|
||||
*/
|
||||
export function ServiceWorkerRegistration() {
|
||||
useEffect(() => {
|
||||
if (process.env.NODE_ENV !== "production") return;
|
||||
if (!("serviceWorker" in navigator)) return;
|
||||
|
||||
const register = () => {
|
||||
navigator.serviceWorker.register("/sw.js").catch((error) => {
|
||||
console.warn("Service Worker konnte nicht angemeldet werden:", error);
|
||||
});
|
||||
};
|
||||
|
||||
if (document.readyState === "complete") register();
|
||||
else window.addEventListener("load", register, { once: true });
|
||||
}, []);
|
||||
|
||||
return null;
|
||||
}
|
||||
Reference in New Issue
Block a user