Once you’re read the below, why not follow my implementation how-to here
I’ve been working with a client who are expecting a large spike in website traffic and are looking to implement Azure CDN to help with the load. As I was working through the implementation, I found there were some technical details and caveats that aren’t well documented so am writing about them here.
There’s lots of high level information about Azure Content Delivery Network (CDN) online already but at a glance it offers:
- Out of the box integration with a host of Azure services, including Web Apps, Media Services, Storage and Cloud Services
- Elastic capacity with a distributed global presence
- Developer tools in the form of API’s
- Built in security that mitigates threats on the content distribution network including distributed denial-of-service attacks.
- Multiple provider and pricing options
- Analytics and insights about the data that is being accessed and downloaded
There are a few variants available to you depending on your requirements. To choose the correct product and begin your implementation you should consider:
- Are there POP locations close to your user base
FQDNs and HTTPS
- Are you going to deploy a Custom domain
(Do you want the content that is served from the CDN to present in a browser as your own URL instead of the CDN URL, in most cases the answer would be yes)
- Do you require HTTPS for the custom domain?
|FQDNs & HTTP||Standard Microsoft||Standard Akamai||Standard Verizon||Premium Verizon|
|HTTPS support with CDN endpoint||✓||✓||✓||✓|
|Custom domain HTTPS||✓||✓||✓|
|Custom domain name support||✓||✓||✓||✓|
* By default, the three providers Microsoft, Akamai and Verizon do not support cookies however, cookies work with the Verizon CDN implementation based on my experience.
Decide which of the three options that Azure Content Delivery Network (CDN) offers to control how your files are cached, suits your content best:
- CDN Global caching rules: One global caching rule for each CDN endpoint which can override any HTTP cache-directive headers that are set locally on the webserver
- CDN Custom caching rules: Multiple rules that match specific paths and file extensions. Rules are processed in order and override the global caching rules if they have been set
- Website cache control headers that are configured by your web developer
Its important to know if you’d like to honour the website cache control rules or override them.
|Caching Requirements||Standard Microsoft||Standard Akamai||Standard Verizon||Premium Verizon|
|Caching Rules & Cache Control Headers||✓||✓|
To ensure the optimized delivery of your content. Azure Content Delivery Network (CDN) can optimize the delivery experience based on the type of content you have. When you’re choosing which CDN to implement, consider:
- Which CDN optimization option would suit your content best
- Geo-Filtering: Is there a requirement to restrict access to your website content by country
- Compression: Would you like to compress content using the CDN endpoint and are the files you’d like to compress supported by Microsoft
- Will you need to configure the CDN for CORS?
(If you deliver static assets such as font files by using the CDN, you might encounter same-origin policy issues if you use an XMLHttpRequest call to request these resources from a different domain)
- Dynamic Site Acceleration: If you have dynamic content that could be slow to deliver over the open internet. DSA could help speed this up by routing traffic for non-cacheable content through the Azure network.
|Performance features and optimizations||Standard Microsoft||Standard Akamai||Standard Verizon||Premium Verizon|
|Content Optimisation Options||✓||✓||✓||✓|
|Geo Filtering (All Content)||✓||✓||✓||**|
|Geo Filtering (Granular)||✓||**|
|CORS -Support – Simple||✓||✓||✓||✓|
|CORS -Support – Complex||***||***||***||✓|
|Dynamic site acceleration||✓||✓||✓|
|Global server load balancing (GSLB)||✓||✓||✓||✓|
* Microsoft and Verizon support delivering large files and media directly via the general web delivery optimization
** you must use the Manage portal to activate geo-filtering. For more information, see Azure CDN Premium from Verizon profiles.
*** It is possible to configure complex, multi origin CORS on standard profiles but the setup is not ideal
Security, Monitoring, Analytics & Reporting
- Will you monitor your CDN implementation using Azure Diagnostic Logs for core analytics or is more detailed reporting around usage and load required
|Analytics and reporting||Standard Microsoft||Standard Akamai||Standard Verizon||Premium Verizon|
|Azure diagnostic logs||✓||✓||✓||✓|
|Core reports from Verizon||✓||✓|
|Custom reports from Verizon||✓||✓|
|Advanced HTTP reports||✓|
|Edge node performance||✓|
|Security||Standard Microsoft||Standard Akamai||Standard Verizon||Premium Verizon|
|Bring your own certificate||✓|
|Ease of use||Standard Microsoft||Standard Akamai||Standard Verizon||Premium Verizon|
|Management via REST API, .NET, Node.js, or PowerShell||✓||✓||✓||✓|
|Customizable, rule-based content delivery engine||✓|
(using rules engine)
|Mobile device rules|
(using rules engine)
If you need to whitelist CDN edge IP’s, a regularly updated list can be requested using the CDN API
In the cloud world things change regularly. If there’s a feature you’re looking for that isn’t available check the product page for updates or vote for a feature request on the Azure CDN User Voice page.