From 6dad6a5af50ddccd45a632d2c7cbc8d9ba41f68d Mon Sep 17 00:00:00 2001 From: Dogfather Date: Thu, 20 Aug 2026 19:23:42 +0200 Subject: [PATCH] Fix: Deploys blieben bei Besuchern bis zu 4 Std im Browser-Cache haengen Nutzer-Report: sah den Nav-Fix und die neue installierbare Verwaltungsseite trotz erfolgreichem Deploy nicht. Ursache: Express schickt standardmaessig KEIN Cache-Control mit -- da die Seite hinter Cloudflare (orange-cloud) liegt, sprang Cloudflare dafuer mit seinem eigenen Standardwert ein (Browser Cache TTL 4 Std, per curl bestaetigt: max-age=14400). Ein frischer Deploy war dadurch bis zu 4 Std lang im eigenen Browser-Cache jedes/jeder Besuchers unsichtbar. Cloudflare respektiert ein vom Origin gesetztes Cache-Control -- jetzt explizit "no-cache" gesetzt (erzwingt Revalidierung per ETag bei jedem Laden, kein Performance-Verlust durch schnelle 304-Antworten bei unveraendertem Inhalt). Co-Authored-By: Claude Opus 5 --- server/index.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/server/index.js b/server/index.js index 4a70f314..8b172194 100644 --- a/server/index.js +++ b/server/index.js @@ -71,6 +71,26 @@ app.use((req, res, next) => { next(); }); +/* Bugfix 20.08.2026 (Nutzer-Report: "ich kann sie immer noch nicht runter + laden und die leiste oben ist immer noch so groß", NACHDEM der jeweilige + Fix schon deployed war): Express selbst schickt standardmäßig GAR KEIN + Cache-Control mit (nur ETag/Last-Modified). Weil dogfather-universe.com + hinter Cloudflare liegt (orange-cloud-Proxy), springt Cloudflare bei + fehlendem Origin-Cache-Control mit seinem EIGENEN Standardwert ein + ("Browser Cache TTL", per curl bestätigt: 4 Stunden = max-age=14400) — + ein frischer Deploy war dadurch für Besucher:innen bis zu 4 Std lang im + eigenen Browser-Cache unsichtbar, obwohl der Server längst die neue + Version ausliefert. Cloudflare respektiert laut Doku ein vom Origin + gesetztes Cache-Control statt seinen Standardwert zu benutzen — deshalb + hier explizit "no-cache" (erzwingt bei jedem Laden eine Revalidierung + per ETag/If-None-Match, liefert bei unverändertem Inhalt ein schnelles + 304 statt die ganze Datei erneut zu senden — kein "gar nicht cachen", + nur "nie blind auf einen alten Stand vertrauen"). */ +app.use((req, res, next) => { + res.setHeader("Cache-Control", "no-cache"); + next(); +}); + app.use(express.static(SITE_DIR, { index: "index.html" })); app.use((req, res) => {