Я не знаю можно ли так делать вообще, если нельзя подскажите как это делается в принципе. Когда я редактирую стили, скрипты, изображения, я хочу при коммитах как-то обозначать эти файлы, чтобы у конечного пользователя они загрузились заново, а не использовались старые закешированные. Я знаю, что для таких задач можно использовать один прием, когда к url всех измененных файлов добавляется новый параметр с номером версии. Например: domain.com/Img.jpg?ver=123 Я могу в коде прописать вручную добавление переменной. Но как ее генерировать? В какой момент? Вручную прописывать версии не очень хочется. Как это вообще делаете вы?
Ну для фронтендеров есть плагины, добавляющие "хеш" в само имя нового файла при сборке через webpack, а в шаблон blade можно подставить что-то вроде {{ mix('myscript.js') }} чтобы получить рабочую ссылку. Если в общем виде, в бекенде у тебя вероятно PHP ))) и есть какие-то шаблоны, в которых прописаны ссылки на ресурсы. То есть задача сводится к тому, чтобы в заготовку типа src="scripts/xxx.js?v=<?= $VERSION ?>" подставить годное значение $VERSION. Годным будет либо таймштамп момента сборки, либо хеш коммита из git Вот тебе варианты для пакетного файла (bash): Код (Text): echo "Change VERSION variable..." # VER=`git log --pretty=format:'%h' -n 1` VER=`date -u +%Y%m%d-%H%M%S` sed -i "/^VERSION=/s/=.*/=${VER}/" .env перезаписывается значение в файле .env. Как его использовать найди сам. Для многих фреймворков dotenv это фича "из коробки".
А сам bash нужно запускать по крону или вручную? Или может его можно запускать при пулле автоматически? --- Добавлено --- Если я буду брать хэш каждый раз при посещении страницы через exec('''git...") - это сильно замедлит загрузку? Миллисекунды, десятки, сотни?
Запускать каждый раз когда обновляешь ассеты. Это часть скрипта деплоя. Кроме этого там может быть накатывание миграций на базу, очистка серверного кеша и т.п. --- Добавлено --- блин, да мне в голову такое не приходило! не надо этого. у тебя появляется новая версия явно не каждый раз при открытии страницы.
Не очень понял как это реализуется. Я юзаю Ларавель. Ну допустим я отдельно написал скрипт, который умеет менять параметры в .env, а куда его прикрутить нужно?
если ты хочешь в ларавель, то делай как советуют в ларавель. в доках написано про версионность через mix, я упомянул, но жевать не буду. форум не заменяет документацию. --- Добавлено --- mix - это путь laravel. теперь ты знаешь что искать.
@Сереганек Недавно в ветке Laravel поднимал эту тему, решил почитав документацию, в последних темах посмотри я вроде там отписывался UPD. Вот тема https://php.ru/forum/threads/kak-otdavat-noyj-js-css-pri-izmenenijax-laravel-vue.74807/