HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching
HTTP's Best-Kept Secret: Caching

Editor's Notes

  • #6 Pure ruby HTTP cache implementation. This talk is not really about Rack::Cache.
  • #7 Heroku understands HTTP caching.
  • #8 What we're talking about when we say HTTP caching. There's so many different caching systems.
  • #9 Page caching, action caching, fragment caching, SQL caching, memcached.
  • #10 *This* is what we're talking about Wire level Declarative. Don't worry if this doesn't look familiar.
  • #12 All caches adhere to the same basic rules for the most part.
  • #13 Or browser cache. People are most familiar with. When we think about HTTP caching, this is what comes to mind. Bandwidth/Traffic Reduction. Number of Clients served by the Cache. I don’t want to talk about Client caches.
  • #14 Many users behind a single cache
  • #17 Also Known As “Reverse Proxy Cache”
  • #19 The reasons have changed over time.
  • #21 First server, client/browser, and web page Things are good for, like, a year. Ramble about research guys trading papers and linking to each other.
  • #22 Explosive Netscape goes public in 1995
  • #23 State of the art Roughly 2.3KB/s Today, yahoo.com homepage is 388K - 2m48s
  • #24 Other things: CGI just starting out. (Guestbooks, hit counters, search) JavaScript - didn’t exist. So what was the most important issue to solve?
  • #26 Expires Last-Modified
  • #27 Cache-Control ETag
  • #28 Much more worried about load on backends. Do less work.
  • #47 I use ETag and If-None-Match. Last-Modified and If-Modified-Since.
  • #48 I use ETag and If-None-Match. Last-Modified and If-Modified-Since.
  • #49 I use ETag and If-None-Match. Last-Modified and If-Modified-Since.
  • #50 I use ETag and If-None-Match. Last-Modified and If-Modified-Since.
  • #53 Halts
  • #66 Requires Rails 2.3+ for Rack/middleware support.