From 80f777e1c0276a022c7a4cb86451d234456d42b5 Mon Sep 17 00:00:00 2001 From: Santosh Wadghule Date: Sat, 23 Jul 2016 17:16:03 +0530 Subject: [PATCH] Add documentation for `http_cache_forever`. [ci skip] --- guides/source/caching_with_rails.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/guides/source/caching_with_rails.md b/guides/source/caching_with_rails.md index cc84ecb216058..a1b0029c473f1 100644 --- a/guides/source/caching_with_rails.md +++ b/guides/source/caching_with_rails.md @@ -512,6 +512,30 @@ class ProductsController < ApplicationController end ``` +Sometimes we want to cache response, for example a static page, that never gets +expired. To achieve this, we can use `http_cache_forever` helper and by doing +so browser and proxies will cache it indefinitely. + +By default cached responses will be private, cached only on the user's web +browser. To allow proxies to cache the response, set `public: true` to indicate +that they can serve the cached response to all users. + +Using this helper, `last_modified` header is set to `Time.new(2011, 1, 1).utc` +and `expires` header is set to a 100 years. + +WARNING: Use this method carefully as browser/proxy won't be able to invalidate +the cached response unless browser cache is forcefully cleared. + +```ruby +class HomeController < ApplicationController + def index + http_cache_forever(public: true) do + render + end + end +end +``` + ### Strong v/s Weak ETags Rails generates weak ETags by default. Weak ETags allow semantically equivalent