fix(frontend): no-cache Header für Static-Files und Index

Browser haben nach Deploys die alten app.js / style.css aus dem Cache
weiterbenutzt. Mit Cache-Control: no-cache, must-revalidate wird bei
jeder Anfrage revalidiert (304 wenn unverändert, 200 wenn neu).
This commit is contained in:
root 2026-05-14 02:24:58 +00:00
parent b57f44cc73
commit d4b0d21ed1

View File

@ -5,12 +5,22 @@ from pathlib import Path
from fastapi import FastAPI
from fastapi.responses import FileResponse, JSONResponse
from fastapi.staticfiles import StaticFiles
from starlette.types import Scope
from app.api.jobs import router as jobs_router
from app.core.config import settings
from app.core.db import init_db
from app.core.mac_client import MacClient
class NoCacheStaticFiles(StaticFiles):
"""StaticFiles, die Browser zu Revalidierung zwingen (verhindert hängende Caches nach Deploy)."""
async def get_response(self, path: str, scope: Scope):
response = await super().get_response(path, scope)
response.headers["Cache-Control"] = "no-cache, must-revalidate"
return response
logging.basicConfig(level=logging.INFO, format="%(asctime)s [%(levelname)s] %(name)s: %(message)s")
log = logging.getLogger("voice-agent")
@ -29,12 +39,12 @@ app = FastAPI(title=settings.app_name, lifespan=lifespan)
app.include_router(jobs_router)
STATIC_DIR = Path(__file__).resolve().parent / "static"
app.mount("/static", StaticFiles(directory=STATIC_DIR), name="static")
app.mount("/static", NoCacheStaticFiles(directory=STATIC_DIR), name="static")
@app.get("/")
def index():
return FileResponse(STATIC_DIR / "index.html")
return FileResponse(STATIC_DIR / "index.html", headers={"Cache-Control": "no-cache, must-revalidate"})
@app.get("/health")