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:
parent
b57f44cc73
commit
d4b0d21ed1
@ -5,12 +5,22 @@ from pathlib import Path
|
|||||||
from fastapi import FastAPI
|
from fastapi import FastAPI
|
||||||
from fastapi.responses import FileResponse, JSONResponse
|
from fastapi.responses import FileResponse, JSONResponse
|
||||||
from fastapi.staticfiles import StaticFiles
|
from fastapi.staticfiles import StaticFiles
|
||||||
|
from starlette.types import Scope
|
||||||
|
|
||||||
from app.api.jobs import router as jobs_router
|
from app.api.jobs import router as jobs_router
|
||||||
from app.core.config import settings
|
from app.core.config import settings
|
||||||
from app.core.db import init_db
|
from app.core.db import init_db
|
||||||
from app.core.mac_client import MacClient
|
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")
|
logging.basicConfig(level=logging.INFO, format="%(asctime)s [%(levelname)s] %(name)s: %(message)s")
|
||||||
log = logging.getLogger("voice-agent")
|
log = logging.getLogger("voice-agent")
|
||||||
|
|
||||||
@ -29,12 +39,12 @@ app = FastAPI(title=settings.app_name, lifespan=lifespan)
|
|||||||
app.include_router(jobs_router)
|
app.include_router(jobs_router)
|
||||||
|
|
||||||
STATIC_DIR = Path(__file__).resolve().parent / "static"
|
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("/")
|
@app.get("/")
|
||||||
def index():
|
def index():
|
||||||
return FileResponse(STATIC_DIR / "index.html")
|
return FileResponse(STATIC_DIR / "index.html", headers={"Cache-Control": "no-cache, must-revalidate"})
|
||||||
|
|
||||||
|
|
||||||
@app.get("/health")
|
@app.get("/health")
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user