Read more

Disabling client caching with Cache-Control: no-store

Dominik Schöler
May 04, 2021Software engineer at makandra GmbH

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.

Illustration web development

Do you need DevOps-experts?

Your development team has a full backlog? No time for infrastructure architecture? Our DevOps team is ready to support you!

  • We build reliable cloud solutions with Infrastructure as code
  • We are experts in security, Linux and databases
  • We support your dev team to perform
Read more Show archive.org snapshot

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.

Posted by Dominik Schöler to makandra dev (2021-05-04 08:40)