As great as caching is โ cache invalidation has been a struggle for a long time now.
There are different approaches that work for different types of websites. I recently had to invalidate the cache of a web app every time a new version has been released. After trying out a few approaches, I settled with an approach that has proven to work every single time.
- We want the site to load from the cache if there is no new version
- We want to refresh the cache every time a new version of the app is deployed
- We use npm package versioning to version our app and each deploy will be versioned incrementally
- We generate a
meta.json
file along with every build in the public dir and it will act as a REST endpoint (won't be cached in browser) - We refresh cache (
window.location.reload(true)
) in the browser whenever a new version is released
Version Control
$ git add -A
$ git commit -m "[message]"
$ npm version patch
$ git push origin master --tags
Delete the previous build folder
$ npm run clean
Update the App Version on the meta.json
$ npm run prebuild
Generate the production build
$ npm run build
Copyright (c) 2019 Dineshkumar Pandiyan