Skip to main content

Caching responses

Caching can reduce latency, avoid unnecessary requests and help applications remain within their assigned rate limits.

Follow response headers

Treat the API's HTTP response headers as the source of truth. When present, Cache-Control indicates whether and for how long a response may be reused.

An ETag identifies a particular representation of a resource. A client can send it in a later conditional request:

If-None-Match: "RESOURCE_ETAG"

If the representation has not changed, the server can return:

304 Not Modified

The response has no new body, and the client can continue using its cached copy.

Do not assume caching support

Not every endpoint or deployment necessarily returns the same caching headers. Do not invent a cache lifetime when the response explicitly prohibits caching.

When no caching instruction is present, choose a conservative application-level refresh policy based on how time-sensitive the data is.

Cache keys

For list and search responses, include the complete normalized query in the cache key. These requests are different:

/v1/clubs?near=Hamburg&country=DE&limit=20
/v1/clubs?near=Hamburg&country=DE&public=true&limit=20

Authentication scope can also affect a response. Do not share private or differently scoped responses between users or API clients unless the response headers explicitly allow it.

Club details

Detailed club records are often suitable for longer caching than interactive searches, but access rules and prices can still change. Revalidate records instead of treating them as permanent.

Error responses

Do not cache authentication errors. Cache temporary server errors only when explicitly permitted by the response headers.