Впрочем у меня есть файл client.js. И при каждом изменение, нужна прописывать версию: client.js?v0.00001, как сделать, чтобы так часто не изменить её. Вся проблема в том, что файл состоит из 35 строк...
Обновляй страницу ctrl+F5, однако пользователи не сделавшие очистку кеша - не получат свежую версию скрипта.
надо браузеру дать правило, что это не один и тот же файл, атрибутом в гет параметре. src="....client.js?<?= $_SERVER['REQUEST_TIME'] ?>" ..... > --- Добавлено --- Или лучше хеш файла, который учитывает изменение файла, размер и прочее ( не знаю точно, тестов нет )
Тогда ты лишишь себя механизма кэширования. Тут два основных варианта: 1. Если файл действительно меняется постоянно, то при запросе к нему с клиента можно прописывать get-параметр с текущем временем или даже со случайным числом. Браузер будет грузить его каждый раз как новый. 2. Если нужно именно версионирование, то можно подставлять в качестве параметра время последнего изменения файла. Это дешевле чем хэш. А полагаться на ctrl-f5 можно только если сайт не ушел в продакшн, т.к. пользователь сайта не будет так делать и в результате у него все может сломаться.
Я пришел к тому, чтобы для ассетов указывать версию деплоя. То есть она одна на все ассеты, а не индивидуальная. Версия меняется в процессе обновления скриптов на сервере. Т.е. при "деплое" Этой версией может быть git hash если деплой делается через git или метка времени деплоя. В процессе деплоя номер версии обновляется в .env и таким образом становится доступен в PHP скриптах. Поддержка .env изначально есть в Laravel, в самописных скриптах можно подключить пакет dotenv через composer. Часть баш-скрипта деплоя: Код (Text): VER=`date --utc +%Y%m%d-%H%M%S` sed -i "/^VERSION=/s/=.*/=${VER}/" .env а можно так: VER=`git log --pretty=format:'%h' -n 1` --- Добавлено --- В шаблоне вывода PHP: <link rel="stylesheet" href="/css/styles.min.css?v={{ $VERSION }}"> Во View Composer или какой-нибудь иной обвязке с "глобальными" переменными шаблонов, делаем переменную доступной во всех шаблонах: PHP: [ //... 'VERSION' => env('VERSION', time()), //... ] Таким образом, если вдруг параметр VERSION не задан (например на локалке скрипт деплоя не запускается), то ассеты получаются как бы всегда просроченные. Для девелоперской версии это нормально. Ненормально заставлять себя и других нажимать Ctrl+F5 после каждого обновления.