Обход кэширования js/css
Наиболее простой для Вас вариант, как мне кажется — это, конечно же, использовать GET-параметр после скрипта:
<script src="/js/script.js?1273455236"></script>

Но, не просто параметр, а в этом параметре передавать время изменения файла скрипта в unixtime формате. В такой ситуации у Вас файл обновится у всех пользователей после того, как он будет изменён на сервере. Похожий финт можно сделать и с хешом файла, например MD5, это позволит избежать случаев, когда время изменения сместилось без изменения контента, и, по сути, кешированный вариант всех устроит. Это зависит от Вашего метода деплоя.

Конечно же такие проверки задействуют файловую подсистему, интерпретатор и т.д., что не очень быстро и в продакшн я бы такую схему не советовал, но, для реалий быстро-изменяющегося проекта — хороший выстрел в обоих зайцев.
Если нужно отключить кеширование совсем, то по моему мнению самый надежный способ — это генерация случайного числа как описано выше и добавление заголовка Cache-Control: no-cache, no-store в ответ сервера.