Rack Cache on Heroku with Memcached
by Jim Gay
If you’re working with an application which needs to manage it’s cache with Rack::Cache, you’ll want to have fast responses for your metastore. The meta information about your content is probably the most important part of your cache since it’s checked by many clients for the status of the content: is it fresh or stale? See more about How Web Caches Work.
Typically you might setup Rack::Cache like this:
config.middleware.use Rack::Cache, :metastore => 'file:tmp/cache/meta', :entitystore => 'file:tmp/cache/entity'
5MB of Memcache is a decent place to start for free and it’s integrated into your application without any effort on your part. So on Heroku you can use Memcache as your metastore like this:
$cache = Memcache.new config.middleware.use Rack::Cache, :metastore => $cache, :entitystore => 'file:tmp/cache/entity'
That’s simple enough, and it’s just as easy if you’re deploying Radiant:
$cache = Memcache.new config.middleware.use Radiant::Cache, :metastore => $cache
If you want to look at an example of a simple app that does this, there’s an easy to understand sample application on github. Enjoy your speedy metastore.