Documentation
Cache control
By default the node honours the origin's Cache-Control. When the origin omits it, the following defaults apply:
| Content | TTL | Notes |
|---|---|---|
| Fingerprinted assets | 7 days | served immutable |
| Images | 24 hours | revalidated with ETag |
| HTML | 5 minutes | short TTL for fast deploys |
| Everything else | 1 hour | — |
Purging
A purge marks an object stale across the region; the next request revalidates against the origin. Purges are eventually consistent and typically complete within 30 seconds.
curl -X PURGE https://st.capc.app/assets/app.css \
-H "Authorization: Bearer <token>"
Compression
The node negotiates zstd first, then gzip. If a pre-compressed sibling file exists (app.css.zst, app.css.gz), it is served directly instead of compressing on the fly.
Supported formats
All static types are passed through unchanged. Content negotiation is available for images: when the client advertises image/avif or image/webp and a matching variant exists, it is preferred over the original.
Health checks
GET /health returns a small JSON document with the node identifier and current timestamp. It is intended for load-balancer probes and is never cached.
{"status":"ok","node":"msk1","ts":"2026-07-28T10:00:00Z"}
Limits
- Maximum object size: 512 MiB
- Request timeout: 60 seconds
- Range requests: supported