mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-06-15 17:25:26 -04:00
perf(http): gzip-compress text responses (#3690)
The frontend's text assets shipped uncompressed on every cold load. Add Starlette's GZipMiddleware. Measured on the current assets: - style.css 1,127 KB -> 238 KB (-79%) - index.html 202 KB -> 35 KB (-83%) - chat.js 238 KB -> 60 KB (-75%) minimum_size=1024 skips tiny bodies; Starlette excludes `text/event-stream` by default, so the SSE streams (chat, shell, research, model-probe — all served with media_type="text/event-stream") are never compressed or buffered. Composes cleanly with the existing security-header middleware. No behavioural change. Built by OdWar -- with Claude thinking alongside.
This commit is contained in:
@@ -47,6 +47,7 @@ from fastapi.responses import JSONResponse, FileResponse, HTMLResponse
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
from fastapi.staticfiles import StaticFiles
|
||||
from starlette.middleware.base import BaseHTTPMiddleware
|
||||
from starlette.middleware.gzip import GZipMiddleware
|
||||
|
||||
# Core imports
|
||||
from core.constants import (
|
||||
@@ -104,6 +105,16 @@ app.add_middleware(
|
||||
],
|
||||
)
|
||||
|
||||
# ========= RESPONSE COMPRESSION (gzip) =========
|
||||
# The frontend's text assets (style.css, index.html, the JS bundles) shipped
|
||||
# uncompressed on every cold load. gzip cuts CSS/JS/HTML by ~75-85% on the wire
|
||||
# with no behavioural change. Starlette's GZipMiddleware excludes
|
||||
# `text/event-stream` by default, so the SSE streams (chat, shell, research,
|
||||
# model-probe — all served with media_type="text/event-stream") are never
|
||||
# compressed or buffered; only complete bodies over minimum_size are. The
|
||||
# security-header middleware composes cleanly on top.
|
||||
app.add_middleware(GZipMiddleware, minimum_size=1024, compresslevel=6)
|
||||
|
||||
# ========= SECURITY HEADERS MIDDLEWARE =========
|
||||
app.add_middleware(SecurityHeadersMiddleware)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user