Some tools, like Ruby on Rails will compute a unique signature as part of the file name for each file when you prepare for deployment to production. This helps ensure that every time you deploy new code, only the new version of everything will be linked to.
If you use WebPack it may help you out quite a bit. Take a look here https://medium.com/powerspace-engineering/how-to-cache-busti...
1) Store the result of Date.now() somewhere when the app starts
2) Have an interval to check the difference between Date.now() and the timestamp you stored in 1)
3) If the difference is over a certain threshold, force a page reload
(or schedule a page reload for when the user is in a "safe" state)
Or you could probably poll an endpoint / listen to a websocket and trigger the reloading by flipping a switch or sending a message. It won't be a client-only solution, though.