Video is the heaviest content type most sites serve — routing delivery through a CDN meaningfully improves buffering, start-up time, and overall viewer experience, especially for a geographically distributed audience.
Why Video Especially Benefits from a CDN
Video streams (particularly HLS, made of many small segment files) generate substantially more requests and data volume than typical web content — the latency savings from edge-cached delivery compound significantly across a full viewing session.
What to Cache at the CDN Layer
- On-demand video files/segments — highly cacheable, since content doesn't change once published
- Live HLS segments — cacheable for their short validity window, though live content needs shorter cache durations than on-demand content
- Not typically cacheable: the live HLS playlist file itself, which updates frequently during an active stream
Step 1 — Set Appropriate Cache Headers for Video Segments
location ~* \.ts$ {
expires 1h;
add_header Cache-Control "public";
}
location ~* \.m3u8$ {
expires -1;
add_header Cache-Control "no-cache";
}
Segment files (.ts) are immutable once created and safe to cache; the playlist (.m3u8) changes frequently for live content and shouldn't be cached at all in that scenario.
Step 2 — Configure the CDN in Front of Your Origin
See How to Set Up a CDN in Front of Your VPS for the general setup pattern, applied here specifically to your video delivery paths.
Step 3 — Verify Range Request Support (Critical for Video)
Video playback relies heavily on HTTP range requests (allowing seeking/scrubbing without downloading the entire file) — confirm both your origin server and CDN correctly support and pass through range requests, since broken range support causes seeking to fail or force full re-downloads.
Step 4 — Test CDN Caching Effectiveness
curl -I https://cdn.yourdomain.com/video-segment.ts
Check response headers for cache-hit indicators on repeated requests, confirming the CDN is actually serving from cache rather than hitting your origin every time.
Step 5 — Monitor Origin Bandwidth Reduction
After implementing CDN caching, monitor your origin server's actual bandwidth usage — a significant reduction confirms the CDN is effectively absorbing repeat-view traffic rather than every request reaching your VPS directly.
Handling Adaptive Bitrate Streaming with a CDN
If serving multiple quality variants (see How to Set Up HLS Streaming with Nginx), ensure the CDN correctly caches each variant's segments separately — they're distinct files/URLs, so this typically works automatically without special configuration.
Geographic Considerations
A CDN's primary value for video is serving from edge locations near viewers rather than your single origin server — particularly impactful if your audience is geographically distributed far from your VPS's data center region.
Cost Considerations
Video is bandwidth-intensive, and CDN costs typically scale with data transferred — factor this into your cost planning, especially for popular content with high repeat-view volume, though the origin bandwidth savings often substantially offset CDN costs.
Common Errors
Seeking/scrubbing doesn't work through the CDN — almost always a range request support issue; verify both origin and CDN configuration correctly pass through Range headers and respond with proper 206 Partial Content responses.
Continue Reading
- How to Set Up a CDN in Front of Your VPS
- How to Set Up HLS Streaming with Nginx
- VPS Requirements for Media Streaming Servers
Browse more articles in Media & Streaming Servers.