adds caching with rack::cache