Module

cache.middleware

Cache middleware — site-wide GET response caching.

Opt-in viacache_middleware_enabled = Truein config. Only caches GET requests that return 200 with no Set-Cookie header. Requests carrying Cookie or Authorization bypass the cache entirely.

Classes

_CachedResponse 3

Attributes

Name Type Description
body bytes
content_type str
headers tuple[tuple[str, str], ...]
CacheMiddleware 2
Site-wide cache for GET 200 responses. Skips caching for: - Non-GET requests - Requests with Cooki…

Site-wide cache for GET 200 responses.

Skips caching for:

  • Non-GET requests
  • Requests with Cookie or Authorization headers
  • Non-200 responses
  • Responses with Set-Cookie header
  • Streaming/SSE responses

Methods

Internal Methods 2
__init__ 3
def __init__(self, backend, ttl: int = 300, key_func = None) -> None
Parameters
Name Type Description
backend
ttl Default:300
key_func Default:None
__call__ 2 AnyResponse
async
async def __call__(self, request: Request, next: Next) -> AnyResponse
Parameters
Name Type Description
request
next
Returns
AnyResponse

Functions

_has_private_request_headers 1 bool
Return True for request headers that commonly vary per user.
def _has_private_request_headers(request: Request) -> bool
Parameters
Name Type Description
request Request
Returns
bool
_cacheable_response_headers 1 tuple[tuple[str, str], .…
Strip headers that the sender computes or that are hop-by-hop.
def _cacheable_response_headers(headers: tuple[tuple[str, str], ...]) -> tuple[tuple[str, str], ...]
Parameters
Name Type Description
headers tuple[tuple[str, str], ...]
Returns
tuple[tuple[str, str], ...]