fastapi_middleware_toolkit.cache_control ======================================== .. py:module:: fastapi_middleware_toolkit.cache_control .. autoapi-nested-parse:: Cache-Control middleware for FastAPI applications. Sets safe default Cache-Control headers if route didn't set them. Attributes ---------- .. autoapisummary:: fastapi_middleware_toolkit.cache_control.logger Classes ------- .. autoapisummary:: fastapi_middleware_toolkit.cache_control.CacheControlMiddleware Functions --------- .. autoapisummary:: fastapi_middleware_toolkit.cache_control.setup_cache_control_middleware Module Contents --------------- .. py:data:: logger .. py:class:: CacheControlMiddleware(app, default_cache_control: str = 'public, max-age=60, stale-while-revalidate=30') Bases: :py:obj:`starlette.middleware.base.BaseHTTPMiddleware` Middleware that sets default Cache-Control headers if not set by route. Prevents accidental caching of sensitive data by setting safe defaults. Routes can override by setting Cache-Control explicitly. Args: default_cache_control: Default header value to use. Default: "public, max-age=60, stale-while-revalidate=30" Examples: >>> app = FastAPI() >>> app.add_middleware( ... CacheControlMiddleware, ... default_cache_control="no-store" ... ) .. py:attribute:: default_cache_control :value: 'public, max-age=60, stale-while-revalidate=30' .. py:method:: dispatch(request: starlette.requests.Request, call_next: Callable) -> starlette.responses.Response :async: Process request and set Cache-Control if not already set. .. py:function:: setup_cache_control_middleware(app: fastapi.FastAPI, default_cache_control: str = 'public, max-age=60, stale-while-revalidate=30') -> None Setup Cache-Control middleware for FastAPI application. Sets safe default Cache-Control headers if routes don't set them. Args: app: FastAPI application instance default_cache_control: Default header value to use. Default: "public, max-age=60, stale-while-revalidate=30" Common patterns: - "public, max-age=60, stale-while-revalidate=30" (default, moderate caching) - "no-store" (no caching, for sensitive data) - "public, max-age=3600" (1 hour cache) - "private, max-age=0, must-revalidate" (browser only, always validate) Examples: >>> app = FastAPI() >>> setup_cache_control_middleware(app) >>> setup_cache_control_middleware(app, "no-store")