A content delivery network (CDN) is a collection of web servers distributed across multiple locations to deliver content more efficiently to users.
There are two population methods : push and pull.
Pull requires virtually no work on the server side: URL’s are rewritten to the files by replacing the server domain name with the CDN’s domain name. The CDN will then apply the Origin Pull technique and will periodically pull the files from the origin (the server). How often that is, depends on how headers have been configured (particularly the Expires header).
Push requires a fair amount of work at the server side to sync files to the CDN. But you gain flexibility because you can decide when files are synced, how often and if any preprocessing should happen.
Most CDN’s support both origin pull and one or more push methods (for instance Amazon Cloudfront).
Wim Leers published on his website his bachelor thesis about “Improving Drupal’s page loading performance” with a chapter of key properties of CDN‘s.