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 <[email protected]>
This commit is contained in:
2026-08-20 19:23:42 +02:00
co-authored by Claude Opus 5
parent 2c5e04e433
commit 6dad6a5af5
+20
View File
@@ -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) => {