Копать стоит в инвалидацию кеша путём смены url до .js для каждой новой версии файла.
Когда вместо script.js у вас будет некое версионирование
Например script.vXXX.js либо используют хеш от содержимого script.MD5(от содержимого скрипта).js = script.adadadasdadadsd.js и соотв-но при модификации скрипта будет меняться и url
Этот подход лучше всех остальных, так как позволяет реализовать инвалидацию кеша css/js при изменении файла, а так же эффекивно кешировать на клиенте (можно будет сразу на год)
За примером далеко ходить не надо, откройте исходный код этой страницы и увидите как пример использования этого подхода
https://qna.habr.com/frontend.5e15b533-1a38-4c3c-b...
https://qna.habr.com/frontend.5e15b533-1a38-4c3c-b...