Not every API response needs a fresh origin hop. Public product, content and configuration GETs are often identical. Cache those. Never cache the ones that change with Authorization.

Mark the safe GETs

Catalogue, published CMS content, feature flags that are global, and OpenAPI docs are typical. Set a TTL that matches how wrong a stale answer can be, plus purge from the publish pipeline.

Bypass the rest

POST, PATCH, PUT, DELETE, and any GET that varies on Authorization or cookies. GraphQL POSTs usually bypass unless you have persisted public GET queries you fully control.

Shield and short TTLs

APIs with 15-60 second TTLs create regular miss storms. Origin Shield is how a small API cluster survives that pattern.

Tokens for private GETs

If a GET is cacheable for a cohort but not the world, token authentication can gate the cached object. Application auth still owns entitlements.