Meridian Edgeanycast

Documentation

Everything you need to put a hostname behind the edge and keep it there. Examples are copy-pasteable and tested on every release.

Quick start

Create a zone, point DNS at it, and you are serving. The zone is live on every PoP before the API call returns.

terminal
# 1. create the zone
meridian zones create dl.example.com \
  --origin origin.example.internal:8443 \
  --shield eu-central

# 2. point DNS at the anycast name
dl.example.com.  300  IN  CNAME  z8f21.edge.master-c1.cdnmedia.download.

# 3. confirm
curl -sI https://dl.example.com/releases/client.pkg | grep -i x-cache
The first request in each region is a miss by definition. If you know a release is coming, call POST /v3/zones/{id}/prefetch and the edge will pull the object before your announcement goes out.

Concepts

Three ideas explain most of the behaviour you will observe.

  • Slice. Objects above 8 MB are fetched and cached in 8 MB slices. A client asking for bytes 0–1023 causes one slice fetch, not a full-object fetch.
  • Shield. A regional cache that every edge in that region fetches through. It is what keeps origin load flat.
  • Collapse. Concurrent misses for the same slice are merged into one upstream request; the rest wait on it.

Cache keys

The default key is scheme, host, path and the query parameters you declare. Everything else is ignored, which stops tracking parameters from shattering your hit ratio.

ComponentDefaultConfigurable
Schemeincludedno
Hostincludedyes — collapse aliases into one key
Pathincludedyes — case folding, trailing slash
Querydeclared parameters onlyyes
Cookieexcludedyes — allow-list only
Accept-Encodingnormalisedno

Purging

Three flavours, all global and all asynchronous with a receipt you can poll.

  1. Path purge — exact URLs, up to 5,000 per call.
  2. Tag purge — everything tagged by a Cache-Tag response header from your origin.
  3. Prefix purge — a subtree, rate limited to 20 calls per minute because it is expensive.
purge-by-tag.sh
curl -X POST https://api.master-c1.cdnmedia.download/v3/zones/z_8f21/purge \
  -H "Authorization: Bearer $MERIDIAN_TOKEN" \
  -d '{"tags":["release-2026.8"]}'

Compression

Brotli at level 5 for text types, zstd where the client advertises it, and nothing at all for formats that are already compressed. You can force a policy per rule if your origin knows better.

Range requests

Fully supported, including multi-range. Because storage is sliced, a range request never pulls more than the slices it touches — this is what makes video seeking cheap.

Origins that answer 206 with a wrong Content-Range will poison a slice. We validate and reject mismatches, but you will see misses until the origin is fixed.

Limits

LimitBuildScaleEnterprise
Object size8 GB128 GBunlimited
Zones10unlimitedunlimited
Purges per minute20600negotiated
Edge rules per zone3200negotiated
Log delivery lag5 min30 s10 s