Browsers usually cache website content in order to provide the user with faster responses. Examples are returning to a website using the "Back" button, or reopening a browser and restoring previous tabs.
However, there are applications where this kind of client caching produces annoying results: a time tracking tool may show a wrong clock-in state, or an SPA todo app may display an outdated list. In these cases, client caching should be disabled.
In order to prevent client caching, set a Cache-Control
header of no-store
. This tells the browser to not cache this response, and it will fetch a fresh copy any time the page is opened again.
You can do that by adding a filter to your ApplicationController
like this:
before_filter :disable_browser_caching!
def disable_browser_caching!
response.headers['Cache-Control'] = 'no-cache, no-store, must-revalidate'
end
Keep in mind that reverse proxies, caches, or a CDN may overwrite these settings.