For high-traffic AEM sites, Dispatcher alone is rarely enough — a CDN layer in front of it changes both the performance profile and the failure modes you need to design for.
Why layer a CDN in front of Dispatcher
Dispatcher caching lives close to your publish tier and is excellent at protecting AEM from repeated requests, but it is still one network hop (or several) away from your global user base. A CDN pushes cached content to edge locations near the user, reducing latency, and absorbs traffic spikes without that load ever reaching Dispatcher or the publish tier at all.
Cache invalidation across two layers
The hardest part of this architecture is keeping CDN cache and Dispatcher cache invalidation in sync. When content is activated, the standard AEM flush agent clears Dispatcher's cache — but the CDN layer needs its own invalidation call (via API, typically triggered from the same workflow step or an additional flush agent target) or it will keep serving stale content well past the Dispatcher flush.
Origin shielding
Configure the CDN to route all edge cache misses through a single "shield" region close to your Dispatcher/publish infrastructure, rather than letting every edge location independently query origin on a cache miss. This significantly reduces the concurrent load your Dispatcher tier sees during a cache-cold scenario, such as right after a large content deployment.
Failover considerations
- Decide explicitly what the CDN should serve if the origin (Dispatcher/publish) is unreachable — stale-while-revalidate style behavior is often preferable to a hard error page for read-heavy content
- Health-check the origin from the CDN layer, not just from your own monitoring, since CDN-perceived origin health can differ from what your internal tools report
- Test actual failover behavior periodically rather than assuming the configuration works as documented
Monitoring that matters
Track cache hit ratio at both layers separately. A healthy CDN hit ratio masking a poor Dispatcher hit ratio (or vice versa) hides real capacity risk that only shows up when one layer's cache is cold — for instance, right after a CDN configuration change or purge.