Circumstances at the time meant that giving an internal presentation was incumbent, so I opted for an approach that steps through HTTP request/response cycles; slides work reasonably well for that.
The slide deck explains various scenarios and corresponding
headers. It starts by introducing conditional
GET requests (via
If-None-Match), followed by
resource expiry (via
Cache-Control). From there, we can
distinguish immutable from volatile resources and point out common patterns like
stale and private resources.
Steve Souders’s Cache is King served as inspiration for this trimmed-down introduction (cf. slides 30 ff.; 00:10:41 in the video). Also worth reading are Jake Archibald’s Caching best practices & max-age gotchas along with Fastly’s real-world analysis in The headers we want and The headers we don’t want.