CDN Determination

How does webpagetest determine that an object is downloaded from a CDN? Is there a list of CDN host names to compare to? Or, is it a list of IPs that are known to be associated with CDNs? Is that list available?

Thanks in advance.

There is a known list of CDN’s. The domain for a request is looked up and the host name as well as any CNAME alias’ are compared against the known list to see if it is recognized. If you are using a CDN that isn’t recognized just shoot me a sample test and I’ll get it added in the next release.

Unfortunately the checks are done on the test systems themselves so it has to wait for a code update on the testers to get updated.

This list is in the glossary at the end of this page: but is a little out of date (MaxCDN has been added since the table was updated). As I move the docs to a wiki it will be a lot easier to keep things up to date.

The ultimate authority is in the code :slight_smile: - (CPagetestReporting::IsCDN).

Here is the actual check:

name.Find("") > -1 || // Akamai
name.Find("") > -1 || // Akamai
name.Find("") > -1 || // Limelight
name.Find(“”) > -1 || // Edgecast
name.Find(“”) > -1 || // Highwinds
name.Find("") > -1 || // Panther
name.Find("") > -1 || // Simple CDN
name.Find("") > -1 || // Mirror Image
name.Find("") > -1 || // ???
name.Find("") > -1 || // Yahoo distribution
name.Find("") > -1 || // Google distribution
name.Find("") > -1 || // Internap
name.Find("") > -1 || // Amazon CloudFront
name.Find("") > -1 || // NetDNA
name.Find("") > -1 || // Cotendo CDN
name.Find("") > -1 || // Cachefly (also anycast - support to be added)
name.Find("") > -1 // Coral Cache

Thanks for this detailed response. I think I get it. How do I find all the CNAME aliases for a given host. For instance, shows that pagetest was able to determine that was a CDN but this is not in the list checked in the code.


Pagetest looks at the full DNS response (not just what is exposed in the test results) and it looks like that is CNAMEd to


Non-authoritative answer:

That’s what I needed. Thank you Patrick!