Diagnose: Normalzustaende nicht mehr als Befund melden
Filipes Diagnose zeigte zwei "!", obwohl alles in Ordnung war: ! Service Worker aktiv -> 1 registriert ! Zwischenspeicher -> dogfather-webdesign-v11 ! Anmeldung Verwaltung -> keiner vorhanden Alle drei sind der NORMALFALL: Ein aktiver Service Worker ist gewollt -- ohne ihn liesse sich die Seite nicht als App installieren. Das war ausdruecklicher Wunsch. Der Zwischenspeicher enthielt v11 -- also genau die Fassung, die der Server ausliefert. Die erste Fassung meldete JEDEN gefuellten Zwischenspeicher als auffaellig, auch den topaktuellen. Das ist Panikmache, kein Befund. Die Anmeldung gilt je Tab. In einem frisch geoeffneten Tab ist zwangslaeufig keine da -- und sie SOLL beim Schliessen ohnehin verschwinden, das war eine ausdrueckliche Vorgabe. Ein Pruefwerkzeug, das den Normalzustand anmahnt, ist schlimmer als keines: Es schickt einen auf die Suche nach einem Fehler, den es nicht gibt -- und wenn dann einmal ein echter kommt, sieht er genauso aus wie das Rauschen davor. Jetzt liest die Diagnose die erwartete Fassung aus dem Service-Worker-Skript auf dem Server und VERGLEICHT. Nur eine Abweichung ist ein Befund. GEPRUEFT mit beiden Faellen: bei v11 sechsmal gruen, bei kuenstlich gesetztem v3 ein "!" mit beiden Fassungsnummern im Klartext. Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
+58
-26
@@ -151,38 +151,69 @@ code { background: rgba(127,208,232,.1); padding: .1rem .35rem; border-radius: 5
|
||||
async function pruefen() {
|
||||
ziel.innerHTML = "";
|
||||
|
||||
/* 1. Service Worker — der häufigste Grund für "es lädt die alte
|
||||
Fassung". Er überlebt ein normales Neuladen. */
|
||||
/* Welche Fassung SOLL es sein? Steht im Service-Worker-Skript auf
|
||||
dem Server. Ohne diesen Vergleich kann man nicht sagen, ob ein
|
||||
gefuellter Zwischenspeicher gut oder schlecht ist -- die erste
|
||||
Fassung meldete jeden Zwischenspeicher als "auffaellig", auch den
|
||||
topaktuellen. Das ist Panikmache, kein Befund. */
|
||||
var sollFassung = null;
|
||||
try {
|
||||
var swTxt = await (await fetch("/webdesign/sw.js?diagnose=" + Date.now(), { cache: "no-store" })).text();
|
||||
var tref = swTxt.match(/CACHE_NAME\s*=\s*"([^"]+)"/);
|
||||
if (tref) sollFassung = tref[1];
|
||||
} catch (e) { /* nicht schlimm, dann eben ohne Vergleich */ }
|
||||
|
||||
/* 1. Service Worker.
|
||||
|
||||
Aktiv zu sein ist der NORMALFALL -- die Seite ist als App
|
||||
installierbar, dafuer braucht es ihn. Auffaellig ist er nur, wenn
|
||||
er eine veraltete Fassung vorhaelt. */
|
||||
var swAktiv = 0;
|
||||
if ("serviceWorker" in navigator) {
|
||||
try {
|
||||
var regs = await navigator.serviceWorker.getRegistrations();
|
||||
var meine = regs.filter(function (r) {
|
||||
swAktiv = regs.filter(function (r) {
|
||||
return (r.scope || "").indexOf("/webdesign") >= 0;
|
||||
});
|
||||
if (!meine.length) {
|
||||
zeile("gut", "Service Worker", "Keiner aktiv — Dateien kommen direkt vom Server.");
|
||||
} else {
|
||||
zeile("warn", "Service Worker aktiv",
|
||||
meine.length + " registriert. Er kann alte Dateien ausliefern. "
|
||||
+ "Der Knopf unten meldet ihn ab.");
|
||||
}
|
||||
} catch (e) {
|
||||
zeile("warn", "Service Worker", "Konnte nicht geprüft werden: " + e.message);
|
||||
}
|
||||
} else {
|
||||
zeile("gut", "Service Worker", "Von diesem Browser nicht unterstützt — kein Problem.");
|
||||
}).length;
|
||||
} catch (e) { swAktiv = -1; }
|
||||
}
|
||||
|
||||
/* 2. Zwischenspeicher */
|
||||
/* 2. Zwischenspeicher -- und der Vergleich, auf den es ankommt. */
|
||||
var gefunden = [];
|
||||
if ("caches" in window) {
|
||||
try {
|
||||
var namen = await caches.keys();
|
||||
var meineC = namen.filter(function (n) { return n.indexOf("webdesign") >= 0; });
|
||||
if (!meineC.length) zeile("gut", "Zwischenspeicher", "Leer.");
|
||||
else zeile("warn", "Zwischenspeicher", "Enthält: " + meineC.join(", "));
|
||||
} catch (e) {
|
||||
zeile("warn", "Zwischenspeicher", "Nicht prüfbar: " + e.message);
|
||||
}
|
||||
gefunden = namen.filter(function (n) { return n.indexOf("webdesign") >= 0; });
|
||||
} catch (e) { gefunden = []; }
|
||||
}
|
||||
|
||||
var aktuell = !sollFassung || !gefunden.length || gefunden.indexOf(sollFassung) >= 0;
|
||||
var veraltet = gefunden.filter(function (n) { return n !== sollFassung; });
|
||||
|
||||
if (swAktiv < 0) {
|
||||
zeile("warn", "Service Worker", "Konnte nicht geprüft werden.");
|
||||
} else if (!swAktiv) {
|
||||
zeile("gut", "Service Worker", "Keiner aktiv — alles kommt direkt vom Server.");
|
||||
} else if (aktuell && !veraltet.length) {
|
||||
zeile("gut", "Service Worker",
|
||||
"Aktiv und aktuell. Das ist so gewollt — dadurch lässt sich die Seite als App installieren.");
|
||||
} else {
|
||||
zeile("warn", "Service Worker",
|
||||
"Aktiv, hält aber eine veraltete Fassung vor. Der Knopf unten setzt ihn zurück.");
|
||||
}
|
||||
|
||||
if (!("caches" in window)) {
|
||||
zeile("gut", "Zwischenspeicher", "Wird von diesem Browser nicht genutzt.");
|
||||
} else if (!gefunden.length) {
|
||||
zeile("gut", "Zwischenspeicher", "Leer.");
|
||||
} else if (aktuell && !veraltet.length) {
|
||||
zeile("gut", "Zwischenspeicher",
|
||||
"Aktuelle Fassung (" + gefunden.join(", ") + ")" +
|
||||
(sollFassung ? " — stimmt mit dem Server überein." : "."));
|
||||
} else {
|
||||
zeile("warn", "Zwischenspeicher",
|
||||
"Veraltet: " + veraltet.join(", ") +
|
||||
(sollFassung ? ". Der Server liefert " + sollFassung + "." : "."));
|
||||
}
|
||||
|
||||
/* 3. Ist der Server erreichbar? Ein Endpunkt, der ohne Anmeldung
|
||||
@@ -219,9 +250,10 @@ code { background: rgba(127,208,232,.1); padding: .1rem .35rem; border-radius: 5
|
||||
try {
|
||||
var tok = sessionStorage.getItem("wd-vw-token");
|
||||
if (tok) zeile("gut", "Anmeldung Verwaltung", "Ein Sitzungsschlüssel liegt vor.");
|
||||
else zeile("warn", "Anmeldung Verwaltung",
|
||||
"Keiner vorhanden — die Verwaltung fragt nach dem Zugangscode. Das ist normal, "
|
||||
+ "wenn die Seite zwischendurch geschlossen war.");
|
||||
else zeile("gut", "Anmeldung Verwaltung",
|
||||
"In diesem Tab keiner — das ist normal und KEIN Fehler. Der Schlüssel gilt "
|
||||
+ "je Tab, und er soll beim Schliessen der Seite ohnehin verschwinden. "
|
||||
+ "Die Verwaltung fragt dann einmal nach dem Zugangscode.");
|
||||
} catch (e) {
|
||||
zeile("warn", "Anmeldung", "Speicher nicht lesbar: " + e.message);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user