CDNs offer a toolset • The black box approach isn’t always good • Configuration isn’t trivial – And a lot still depends on configuration • Can’t depend on the CDN to solve all your problems • Don’t exacerbate your problems!
More Examples • Bad caching headers – max-age, s-maxage have a lot of power! – stale-if-error and stale-while-revalidate are rad! • Bad TCP connection management at origin • Not Gzipping (actual, compressible content) for origin fetches
What Is Dynamic Content? • Stuff that’s not static! • With web traffic, generally the base HTML – Big deal because it’s blocking – And sometimes the largest object; longer download • Some AJAX • More…
CDNs and Dynamic Content • Generally, handling dynamic content has been a matter of transport – Middle mile optimizations – TCP tweaks • Some edge micro caching, but not easy • ESI
Actually… • Dynamic content is more cacheable than we think • Static for short periods of time • Unpredictable invalidation – Standard HTTP caching rules aren’t good enough • Event-driven Content
So Many Benefits! • Performance – Faster time to first byte – Faster start render – Happy users! • Offload – Less work for our servers – Less bandwidth at origin
What Would Make It Better? • Programmatic Invalidation – Granular – Instantaneous • Control at the edge, and not just for web pages – Real-time log files – Imagine terminating beacons at the edge!
Client-side Measurement in CDNs • Cache hit ratio – How do you test and measure? • Long tail content? • DNS and edge node selection • TTFB out of datacenter – Memory hit vs disk hit vs mid-tier hit vs miss • RUM and synthetic (Cedexis, Catchpoint, etc)
Let’s Test It! • 3 Objects on the same CDN (anonymous) – Cedexis object – Small image from Alexa 5000 site – Long tail object: ~40 times every 3-4 hours • Use Catchpoint last mile clients in US – Test every 15 minutes – ~11,500 total tests across all test nodes • Focus measurement on: – Connect time (TCP) – Wait time (TTFB)
Measurement! • Not only do I care about: – Cache hit rate – Long tail – Measuring the right thing • Fetching from disk could suck! – SSDs! • Caching ≠ Caching
We Don’t Cache As Much As We Should! • HTML and other dynamic content • Worse cache hit rate than we think – Especially for long tail content • Mobile Apps, APIs, etc
Lots of Room • Making changes still sucks • Can’t take some things for granted: – DNS – Routing – TCP – SCALE! • Plus: lots of room to be creative at the edge!