Я разработал веб-сайт на основе Symfony 3.4 и использовал Webpack Encore для управления активами. Когда я развернул последний выпуск, ресурсы CSS/JS не были найдены:
Когда я проверил исходный код веб-страницы, я увидел, что URL-адреса указывают на старые версии ресурсов, например /build/app.db32012d.css, а файл manifest.json ссылается на новые версии ресурсов:
{
"build/app.css": "/build/app.2aba4862.css"
}
Я использую развертыватель для развертывания новых выпусков. Процесс развертывания создает активы, работающие yarn encore prod.
Прежде всего, я попытался разогреть/очистить кеш Symfony, но все равно застрял.
Когда я просматриваю сайт в среде разработки (вызывая app_dev.php), проблема исчезает.
Я попытался перезапустить Apache, но все равно застрял.
Я изменил DocumentRoot VirtualHost с /var/www/current/web на /var/www/foo/web, и проблема исчезла до следующего выпуска.
Вот мой стек:
Я ожидаю, что URL-адреса активов будут указывать на новые версии, как указано в файле manifest.json.
Я подозреваю, что где-то проблема с кешем, но я не могу найти где.
О, я забыл объяснить эту часть: я развернул с помощью инструмента развертыватель. В процессе развертывания запускается yarn encore prod: php task('build:assets', function() { run('yarn install'); run('yarn encore prod'); run('bin/console ckeditor:install'); run('bin/console assets:install web'); })->local();
Кажется, я нашел решение: service php7.3-fpm restart. Имеет ли смысл?






Думаю, я нашел ответ. Ресурсы с поддержкой версий загружаются в шаблоны Twig с помощью функций encore_entry_link_tags и encore_entry_script_tags (Официальный документ).
Эти функции считывают из файла entrypoints.json, созданного Encore, чтобы узнать точные имена файлов для рендеринга.
За тезисами это просто PHP.
Поскольку я использую php-fpm, мне приходится перезапускать службу php-fpm при развертывании новых выпусков моих активов:
service php7.3-fpm restart
Вот и все!
как вы развернули свой последний релиз? Вы бегали
yarn encore production?