Purging is instructing the CDN to no longer serve a file from cache.
By doing a purge for
/images/logo.png, you instruct the CDN to invalidate that cached image on all edge servers globally.
After the purge has completed and a user requests the purged file, the CDN will send a (conditional) request to your origin.
Your origin will then respond by sending the newer version of the file which the CDN will cache and serve to users going forward.
Is the object invalidated (expires in cache) or deleted (removed from cache)?
Many CDNs nowadays do the purge (near) instantly but on some CDNs it may take several minutes.
When has the purging of objects completed on all CDN POPs? Some CDNs provide a way to know, for every purge request, when the purge was actually completed.
Purge per file, purge all files, purge per directory (recursive or not), purge by file type or file extension, purge by tag or key. Do not assume every CDN has all these capabilities.
Some CDNs (eg. Cloudfront) charge for purging if you go over a certain number of purges per month.
CDNs and Purge
- = Yes
- = Sort of/partially
- = No
- = Extra costs
- = Unknown
|QUANTIL||Invalidate||File, all, directory (recursive/not)|
|Fastly||Delete or Invalidate||File, all, directory (recursive/not), tags|
|CDNetworks||Delete||File, all, directory (recursive/not), file extension|
|Level 3||Unknown||File, all, directory (recursive/not)|
|Incapsula||Delete||File, all, directory (recursive/not)|
|Cloudflare||Invalidate||File, all, header|
|Tata Communications||Invalidate||File, all, directory (recursive/not)|
|Verizon Digital Media Services||Invalidate||File, all, directory (recursive/not), file extension|
|CloudFront||Unknown||File, all, directory (recursive/not)|
|BelugaCDN||Delete||File, all, directory (recursive/not)|
More info per CDN
Fastly claims instant purging and from our experience the invalidation/removal of content in cache happens very fast indeed. Their API docs cover all capabilities. To get started you can probably best read the Fastly Help Guide about Purging. Fastly customers may run into the API rate limiting: "You can make up to 1,000 non-read requests per hour."
Cloudflare support articles: How do I purge my cache, How to Purge Cache Using Cache-Tags [Enterprise only].
Tata does not accept purge requests containing internationalized characters like
encodeURI("/images/ståle/1.png"). The result will be
"/images/st%C3%A5le/1.png" and Tata purging works with this.
From experience, we know purging happens fast across all POPs almost always. However, it is too bad Tata gives no insight into if and when the purge has happened. The good news is that Tata serves responses with the Age header, e.g.
Age: 69714. This tells you the number of seconds the object has been in cache. If you see
Age: 0 you know TATA just fetched the object from origin. You can easily check the Age header value with curl. The following command GET fetches an object and prints out the response headers:
curl --compressed -vvo /dev/null 'http://cdn.tatacommunications.com/'
Verizon Digital Media Services
- Purging happens pretty fast (10 - 30 seconds) most of the time, but it happens regularly that purging is not complete within 60 seconds. It's handy they provide a way to know when the purge has completed.
- Verizon Digital Media Services (aka EdgeCast) supports purging by file extension, e.g.
AWS Documentation: Invalidating Objects (Web Distributions Only).
It usually takes 10 to 15 minutes for CloudFront to complete your invalidation request, depending on the number of invalidation paths that you included in the requestThe first 1,000 invalidation paths that you submit per month are free; you pay for each invalidation path over 1,000 in a month (see CloudFront pricing page).
BelugaCDN exposes completion times and information on how many assets were invalidated by the purge request via the API with real-time feedback in the UI. They support full regular expressions on purge request paths. More info in the docs.
CDNsun sets a limit of 20 requests per 5 minutes. Each purge request can have max 500 paths. More info: Knowledge Base: Purging and prefetching a CDN content
CDN77 has a limit of 2000 URLs per purge request and limits the number of purge/prefetch requests to 60 per 5 minutes.
More CDN Guides