Pull Zone / Push Zone

Architecture

Pull zone: CDN fetches content from your origin server on cache miss. Reactive, on-demand caching. Requires an origin server.Push zone: You upload content directly to CDN storage. Proactive, pre-populated caching. CDN acts as the origin.

Updated Apr 3, 2026

Full Explanation

A pull zone is the most common CDN configuration. You point the CDN at your origin server, and it fetches content on demand. When a user requests a file, the edge checks its cache. On a miss, it "pulls" the file from your origin, caches it, and serves it. Your origin stays as the source of truth and the CDN is just a caching layer in front of it. This works great for websites, APIs, and anything where content lives on your own servers.

A push zone flips the model. Instead of the CDN fetching from you, you upload files directly to CDN-provided storage. The CDN itself becomes the origin. There is no upstream server to pull from. This is common for large static assets like software downloads, video files, or game patches where you want to pre-stage content before users request it. You control exactly what is available and when.

Pull is simpler to set up and works well for most use cases. You just configure your origin hostname and the CDN handles the rest. Push gives you more control but requires a deployment step to upload files. Some teams use push zones for assets they want to guarantee are cached everywhere before a launch or release.

Pull zone flow:
  User -> CDN Edge -> (miss) -> Your Origin Server -> response cached at edge

Push zone flow:
  You upload files -> CDN Storage
  User -> CDN Edge -> (miss) -> CDN Storage -> response cached at edge

CDNs like BunnyCDN and KeyCDN use the terms "pull zone" and "push zone" explicitly in their UI. CloudFront calls them "origins" and you configure either your own server or an S3 bucket. Fastly and Cloudflare are primarily pull-based, though you can pair them with object storage for a push-like setup.

Examples

BunnyCDN pull zone creation via API:

curl -X POST https://api.bunny.net/pullzone \
  -H "AccessKey: your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "Name": "my-site",
    "OriginUrl": "https://origin.example.com",
    "Type": 0
  }'
# Type 0 = pull zone (CDN fetches from your origin)
# Type 1 = push zone (you upload to CDN storage)

Frequently Asked Questions

Pull zone: CDN fetches content from your origin server on cache miss. Reactive, on-demand caching. Requires an origin server.Push zone: You upload content directly to CDN storage. Proactive, pre-populated caching. CDN acts as the origin.

BunnyCDN pull zone creation via API:

curl -X POST https://api.bunny.net/pullzone \
  -H "AccessKey: your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "Name": "my-site",
    "OriginUrl": "https://origin.example.com",
    "Type": 0
  }'
# Type 0 = pull zone (CDN fetches from your origin)
# Type 1 = push zone (you upload to CDN storage)