Storage: File is not caching and returns cache-control private, no-cache

When you check whether a file is cached, the cache-control header returns private, no-cache and cf-cache-status does not return HIT.

Cause

You probably sent a HEAD request. Smart CDN doesn’t cache HEAD requests.

Fix

Send a GET request instead.

Send a regular request

curl -sD - -o /dev/null \
https://<project-ref>.supabase.co/storage/v1/object/public/<bucket>/<file>

Send a range request

To avoid downloading the whole file, request only the first byte. The server responds with 206 Partial Content and a 1-byte body:

curl -sD - -r 0-0 -o /dev/null \
https://<project-ref>.supabase.co/storage/v1/object/public/<bucket>/<file>

Check the cache status

The cf-cache-status response header shows whether the CDN cached the object. HIT means the CDN sent the object from its cache. MISS means the CDN fetched it from the origin server.