fastapi_middleware_toolkit.cache_control

Cache-Control middleware for FastAPI applications.

Sets safe default Cache-Control headers if route didn’t set them.

Attributes

Classes

CacheControlMiddleware

Middleware that sets default Cache-Control headers if not set by route.

Functions

setup_cache_control_middleware(→ None)

Setup Cache-Control middleware for FastAPI application.

Module Contents

fastapi_middleware_toolkit.cache_control.logger
class fastapi_middleware_toolkit.cache_control.CacheControlMiddleware(app, default_cache_control: str = 'public, max-age=60, stale-while-revalidate=30')

Bases: 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"
... )
default_cache_control = 'public, max-age=60, stale-while-revalidate=30'
async dispatch(request: starlette.requests.Request, call_next: Callable) starlette.responses.Response

Process request and set Cache-Control if not already set.

fastapi_middleware_toolkit.cache_control.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")