Live vom Nutzer gefunden: eine Aktualisierung von table-tools.js kam nicht an, weil der Browser die alte Version unter derselben URL gecacht hatte - kein Grund fuer den Browser, neu zu laden. Neuer static_version-Jinja-Global (Hash ueber den tatsaechlichen Inhalt aller static/-Dateien, bei Prozessstart berechnet), als ?v=... an pico.min.css/ table-tools.js/theme-toggle.js angehaengt - aendert sich automatisch bei jedem Deploy, ohne manuelles Hochzaehlen. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VLk93dhDMrkPXefVdknMV9
30 lines
1018 B
Python
30 lines
1018 B
Python
import hashlib
|
|
from pathlib import Path
|
|
|
|
from fastapi.templating import Jinja2Templates
|
|
|
|
templates = Jinja2Templates(directory="templates")
|
|
|
|
|
|
def _static_version() -> str:
|
|
"""
|
|
Cache-Busting für /static/*-Dateien (11.09.2026, live gefunden: eine
|
|
Änderung an table-tools.js kam beim Nutzer nicht an, weil der Browser
|
|
die alte Version unter derselben URL gecacht hatte - keine
|
|
Anfrage-URL änderte sich, also gab es für den Browser keinen Grund,
|
|
neu zu laden). Hängt vom tatsächlichen Dateiinhalt ab (nicht der
|
|
Änderungszeit - robuster gegenüber Deploy-Eigenheiten, die mtimes
|
|
verändern können, ohne dass sich der Inhalt ändert), einmalig beim
|
|
Prozessstart berechnet.
|
|
"""
|
|
|
|
static_dir = Path(__file__).parent / "static"
|
|
hasher = hashlib.sha256()
|
|
for datei in sorted(static_dir.glob("*")):
|
|
if datei.is_file():
|
|
hasher.update(datei.read_bytes())
|
|
return hasher.hexdigest()[:12]
|
|
|
|
|
|
templates.env.globals["static_version"] = _static_version()
|