diff --git a/webdesign/diagnose.html b/webdesign/diagnose.html
index 90274594..75d98923 100644
--- a/webdesign/diagnose.html
+++ b/webdesign/diagnose.html
@@ -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);
}