Disabling client caching with Cache-Control: no-store
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.