Workspace: Versionsstempel gegen Cloudflares 4-Stunden-Cache

Filipe sah die neue Kachel nicht, obwohl sie live war. Ursache gemessen,
nicht vermutet:

  Node liefert   : Cache-Control: no-cache        (richtig)
  Cloudflare macht: Cache-Control: max-age=14400  (ueberschreibt es)
  cf-cache-status: REVALIDATED, Server: cloudflare

Cloudflares voreingestellte Browser-Cache-Zeit von vier Stunden setzt
sich ueber das no-cache des Servers hinweg -- aber NUR bei JS und CSS.
HTML kommt mit DYNAMIC und no-cache immer frisch durch (geprueft an
/creator.html und /workspace/).

Genau deshalb genuegt ein Stempel in der HTML: neue Seite -> neue
Adresse -> Cloudflare kennt sie nicht -> frische Datei. Keine
Cloudflare-Einstellung noetig, nichts, worauf ich warten muss.

tools/workspace-stempel.mjs setzt den Stempel auf alle 71 Verweise in
13 Dateien. Der Lauf ist wiederholbar: ein vorhandener Stempel wird
ersetzt, nicht angehaengt (geprueft).

Gehoert ab jetzt vor jeden Deploy, der JS oder CSS im Workspace anfasst.
Ich verlasse mich damit nicht mehr aufs Erinnern -- das war der
eigentliche Fehler.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-08-28 13:03:33 +02:00
co-authored by Claude Opus 5
parent 9b2e09be58
commit c0ac041122
16 changed files with 367 additions and 71 deletions
+5 -5
View File
@@ -7,9 +7,9 @@
<meta name="robots" content="noindex, nofollow" />
<meta name="theme-color" content="#05070d" />
<link rel="icon" href="assets/img/favicon.png" />
<link rel="stylesheet" href="assets/css/gate.css" />
<link rel="stylesheet" href="assets/css/start.css" />
<link rel="stylesheet" href="assets/css/aufgaben.css" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608281303" />
<link rel="stylesheet" href="assets/css/start.css?v=202608281303" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608281303" />
</head>
<body class="start">
@@ -134,7 +134,7 @@
</form>
</dialog>
<script src="assets/js/kopf.js" defer></script>
<script src="assets/js/aufgaben.js" defer></script>
<script src="assets/js/kopf.js?v=202608281303" defer></script>
<script src="assets/js/aufgaben.js?v=202608281303" defer></script>
</body>
</html>
+6 -6
View File
@@ -7,10 +7,10 @@
<meta name="robots" content="noindex, nofollow" />
<meta name="theme-color" content="#05070d" />
<link rel="icon" href="assets/img/favicon.png" />
<link rel="stylesheet" href="assets/css/gate.css" />
<link rel="stylesheet" href="assets/css/start.css" />
<link rel="stylesheet" href="assets/css/aufgaben.css" />
<link rel="stylesheet" href="assets/css/bereich.css" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608281303" />
<link rel="stylesheet" href="assets/css/start.css?v=202608281303" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608281303" />
<link rel="stylesheet" href="assets/css/bereich.css?v=202608281303" />
</head>
<body class="start">
@@ -98,7 +98,7 @@
</main>
<script src="assets/js/kopf.js" defer></script>
<script src="assets/js/bereich.js" defer></script>
<script src="assets/js/kopf.js?v=202608281303" defer></script>
<script src="assets/js/bereich.js?v=202608281303" defer></script>
</body>
</html>
+6 -6
View File
@@ -7,10 +7,10 @@
<meta name="robots" content="noindex, nofollow" />
<meta name="theme-color" content="#05070d" />
<link rel="icon" href="assets/img/favicon.png" />
<link rel="stylesheet" href="assets/css/gate.css" />
<link rel="stylesheet" href="assets/css/start.css" />
<link rel="stylesheet" href="assets/css/aufgaben.css" />
<link rel="stylesheet" href="assets/css/calls.css" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608281303" />
<link rel="stylesheet" href="assets/css/start.css?v=202608281303" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608281303" />
<link rel="stylesheet" href="assets/css/calls.css?v=202608281303" />
</head>
<body class="start">
@@ -49,7 +49,7 @@
</main>
<script src="assets/js/kopf.js" defer></script>
<script src="assets/js/calls.js" defer></script>
<script src="assets/js/kopf.js?v=202608281303" defer></script>
<script src="assets/js/calls.js?v=202608281303" defer></script>
</body>
</html>
+6 -6
View File
@@ -7,10 +7,10 @@
<meta name="robots" content="noindex, nofollow" />
<meta name="theme-color" content="#05070d" />
<link rel="icon" href="assets/img/favicon.png" />
<link rel="stylesheet" href="assets/css/gate.css" />
<link rel="stylesheet" href="assets/css/start.css" />
<link rel="stylesheet" href="assets/css/aufgaben.css" />
<link rel="stylesheet" href="assets/css/dateien.css" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608281303" />
<link rel="stylesheet" href="assets/css/start.css?v=202608281303" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608281303" />
<link rel="stylesheet" href="assets/css/dateien.css?v=202608281303" />
</head>
<body class="start">
@@ -79,7 +79,7 @@
</main>
<script src="assets/js/kopf.js" defer></script>
<script src="assets/js/dateien.js" defer></script>
<script src="assets/js/kopf.js?v=202608281303" defer></script>
<script src="assets/js/dateien.js?v=202608281303" defer></script>
</body>
</html>
+2 -2
View File
@@ -25,7 +25,7 @@
type="image/webp" media="(max-width: 899px)" />
<link rel="icon" href="assets/img/favicon.png" />
<link rel="stylesheet" href="assets/css/gate.css" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608281303" />
</head>
<body class="gate">
@@ -130,6 +130,6 @@
</p>
</main>
<script src="assets/js/gate.js" defer></script>
<script src="assets/js/gate.js?v=202608281303" defer></script>
</body>
</html>
+6 -6
View File
@@ -7,10 +7,10 @@
<meta name="robots" content="noindex, nofollow" />
<meta name="theme-color" content="#05070d" />
<link rel="icon" href="assets/img/favicon.png" />
<link rel="stylesheet" href="assets/css/gate.css" />
<link rel="stylesheet" href="assets/css/start.css" />
<link rel="stylesheet" href="assets/css/aufgaben.css" />
<link rel="stylesheet" href="assets/css/kalender.css" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608281303" />
<link rel="stylesheet" href="assets/css/start.css?v=202608281303" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608281303" />
<link rel="stylesheet" href="assets/css/kalender.css?v=202608281303" />
</head>
<body class="start">
@@ -94,7 +94,7 @@
</main>
<script src="assets/js/kopf.js" defer></script>
<script src="assets/js/kalender.js" defer></script>
<script src="assets/js/kopf.js?v=202608281303" defer></script>
<script src="assets/js/kalender.js?v=202608281303" defer></script>
</body>
</html>
+6 -6
View File
@@ -7,10 +7,10 @@
<meta name="robots" content="noindex, nofollow" />
<meta name="theme-color" content="#05070d" />
<link rel="icon" href="assets/img/favicon.png" />
<link rel="stylesheet" href="assets/css/gate.css" />
<link rel="stylesheet" href="assets/css/start.css" />
<link rel="stylesheet" href="assets/css/aufgaben.css" />
<link rel="stylesheet" href="assets/css/personen.css" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608281303" />
<link rel="stylesheet" href="assets/css/start.css?v=202608281303" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608281303" />
<link rel="stylesheet" href="assets/css/personen.css?v=202608281303" />
</head>
<body class="start">
@@ -87,7 +87,7 @@
</main>
<script src="assets/js/kopf.js" defer></script>
<script src="assets/js/personen.js" defer></script>
<script src="assets/js/kopf.js?v=202608281303" defer></script>
<script src="assets/js/personen.js?v=202608281303" defer></script>
</body>
</html>
+6 -6
View File
@@ -7,10 +7,10 @@
<meta name="robots" content="noindex, nofollow" />
<meta name="theme-color" content="#05070d" />
<link rel="icon" href="assets/img/favicon.png" />
<link rel="stylesheet" href="assets/css/gate.css" />
<link rel="stylesheet" href="assets/css/start.css" />
<link rel="stylesheet" href="assets/css/aufgaben.css" />
<link rel="stylesheet" href="assets/css/profil.css" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608281303" />
<link rel="stylesheet" href="assets/css/start.css?v=202608281303" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608281303" />
<link rel="stylesheet" href="assets/css/profil.css?v=202608281303" />
</head>
<body class="start">
@@ -127,7 +127,7 @@
</main>
<script src="assets/js/kopf.js" defer></script>
<script src="assets/js/profil.js" defer></script>
<script src="assets/js/kopf.js?v=202608281303" defer></script>
<script src="assets/js/profil.js?v=202608281303" defer></script>
</body>
</html>
+6 -6
View File
@@ -7,10 +7,10 @@
<meta name="robots" content="noindex, nofollow" />
<meta name="theme-color" content="#05070d" />
<link rel="icon" href="assets/img/favicon.png" />
<link rel="stylesheet" href="assets/css/gate.css" />
<link rel="stylesheet" href="assets/css/start.css" />
<link rel="stylesheet" href="assets/css/aufgaben.css" />
<link rel="stylesheet" href="assets/css/report.css" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608281303" />
<link rel="stylesheet" href="assets/css/start.css?v=202608281303" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608281303" />
<link rel="stylesheet" href="assets/css/report.css?v=202608281303" />
</head>
<body class="start">
@@ -86,7 +86,7 @@
</main>
<script src="assets/js/kopf.js" defer></script>
<script src="assets/js/report.js" defer></script>
<script src="assets/js/kopf.js?v=202608281303" defer></script>
<script src="assets/js/report.js?v=202608281303" defer></script>
</body>
</html>
+6 -6
View File
@@ -7,10 +7,10 @@
<meta name="robots" content="noindex, nofollow" />
<meta name="theme-color" content="#05070d" />
<link rel="icon" href="assets/img/favicon.png" />
<link rel="stylesheet" href="assets/css/gate.css" />
<link rel="stylesheet" href="assets/css/start.css" />
<link rel="stylesheet" href="assets/css/aufgaben.css" />
<link rel="stylesheet" href="assets/css/scouting.css" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608281303" />
<link rel="stylesheet" href="assets/css/start.css?v=202608281303" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608281303" />
<link rel="stylesheet" href="assets/css/scouting.css?v=202608281303" />
</head>
<body class="start">
@@ -124,7 +124,7 @@
</div>
</div>
<script src="assets/js/kopf.js" defer></script>
<script src="assets/js/scouting.js" defer></script>
<script src="assets/js/kopf.js?v=202608281303" defer></script>
<script src="assets/js/scouting.js?v=202608281303" defer></script>
</body>
</html>
+4 -4
View File
@@ -7,8 +7,8 @@
<meta name="robots" content="noindex, nofollow" />
<meta name="theme-color" content="#05070d" />
<link rel="icon" href="assets/img/favicon.png" />
<link rel="stylesheet" href="assets/css/gate.css" />
<link rel="stylesheet" href="assets/css/start.css" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608281303" />
<link rel="stylesheet" href="assets/css/start.css?v=202608281303" />
</head>
<body class="start">
@@ -56,7 +56,7 @@
</p>
</main>
<script src="assets/js/kopf.js" defer></script>
<script src="assets/js/start.js" defer></script>
<script src="assets/js/kopf.js?v=202608281303" defer></script>
<script src="assets/js/start.js?v=202608281303" defer></script>
</body>
</html>
+6 -6
View File
@@ -7,10 +7,10 @@
<meta name="robots" content="noindex, nofollow" />
<meta name="theme-color" content="#05070d" />
<link rel="icon" href="assets/img/favicon.png" />
<link rel="stylesheet" href="assets/css/gate.css" />
<link rel="stylesheet" href="assets/css/start.css" />
<link rel="stylesheet" href="assets/css/aufgaben.css" />
<link rel="stylesheet" href="assets/css/startcheck.css" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608281303" />
<link rel="stylesheet" href="assets/css/start.css?v=202608281303" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608281303" />
<link rel="stylesheet" href="assets/css/startcheck.css?v=202608281303" />
</head>
<body class="start">
@@ -65,7 +65,7 @@
</main>
<script src="assets/js/kopf.js" defer></script>
<script src="assets/js/startcheck.js" defer></script>
<script src="assets/js/kopf.js?v=202608281303" defer></script>
<script src="assets/js/startcheck.js?v=202608281303" defer></script>
</body>
</html>
+6 -6
View File
@@ -7,10 +7,10 @@
<meta name="robots" content="noindex, nofollow" />
<meta name="theme-color" content="#05070d" />
<link rel="icon" href="assets/img/favicon.png" />
<link rel="stylesheet" href="assets/css/gate.css" />
<link rel="stylesheet" href="assets/css/start.css" />
<link rel="stylesheet" href="assets/css/aufgaben.css" />
<link rel="stylesheet" href="assets/css/wissen.css" />
<link rel="stylesheet" href="assets/css/gate.css?v=202608281303" />
<link rel="stylesheet" href="assets/css/start.css?v=202608281303" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608281303" />
<link rel="stylesheet" href="assets/css/wissen.css?v=202608281303" />
</head>
<body class="start">
@@ -145,7 +145,7 @@
</main>
<script src="assets/js/kopf.js" defer></script>
<script src="assets/js/wissen.js" defer></script>
<script src="assets/js/kopf.js?v=202608281303" defer></script>
<script src="assets/js/wissen.js?v=202608281303" defer></script>
</body>
</html>