Getting to 2nd Base with your Content Delivery Network Mike Brittain Engineering Architect
Overview 1. Measure your performance 2. Tweak your cache TTLs 3. Cache dynamic objects 4. Cache whole pages 5. Inspect origin hits 6. Use proper HTTP headers 7. Use multiple CDNs 8. Review CDN documentation 9. Engage your vendor
Overview 20 Minutes
Overview 1. Cache dynamic objects 2. Inspect origin traffic 3. Cache HTML pages
Typical Setup
CDN Storage $$$
Origin Pull CDN lingo for “reverse proxy”
Response Headers Cache-control: max-age=3600 Last-Modified: Mon, 16 Mar … ETag: “82c e2a”
Revalidation Requests GET /images/generated.css HTTP/1.1 Host: origin.example.com If-Modified-Since: Mon, 16 Mar … If-None-Match: ”82c e2a” HTTP/ OK Content-Length: or... HTTP/ Not Modified $$$ $
Review Origin Logs RequestsURLSize 28/images/logo.gif2 KB 17/images/nav_tabs.png5 KB 4,613/images/annual_report.ppt16 MB 31/images/flames.gif13 KB
Avoid Double Paying 16 MB x 0.35/GB ≈ $25 (CDN) 16 MB x 0.50/GB ≈ $36 (origin) $61
Avoid Double Paying 16 MB x 0.35/GB ≈ $25 (CDN) 16 MB x 0.50/GB ≈ $0.18 (origin) $25 - ish
Cache HTML Pages
Page built just for Mike
Cache HTML Pages Serve generic version to the CDN Use client-side logic for personalization
Cache HTML Pages Replace generic sections with tailored versions Cookies, JavaScript
Cache HTML Pages Track short history of user interactions Fresh data only where needed Ajax, Cookies, JavaScript
Cache HTML Pages Use tracking pixels for page views Real time data with Ajax, or fake it Ajax, Cookies, JavaScript
Cache HTML Pages Search Results, HTML frag., Public APIs, XML, JSON, RSS Do you GET it?
Cache HTML Pages
TTLs of 3 mins to 1 hr Psst… under 60 seconds is okay, too.
Cache HTML Pages 92%
Thank You Slides, etc. Questions
Wait… You’re still here?
No, seriously… go away!
HTTP Headers cURL, telnet, Charles, Fiddler, Firebug, etc.
CDNs Fail Plan B Split traffic between (similar) CDNs Origin servers Cloud storage
CDNs Fail
Amazon CloudFront: $0.17/GB* Rackspace Cloud Files: $0.22/GB JetS3t, Cyberduck, Transit, S3 Browser, S3Fox Plug-in, s3sync.rb, APIs, etc.
Multiple CDNs Cost vs. Performance Time Views