Активы, не найденные в prod с использованием Webpack Encore с Symfony3.4 - PullRequest
0 голосов
/ 02 июля 2019

Я разработал веб-сайт на основе Symfony 3.4 и использую Webpack Encore для управления активами. Когда я развернул последний выпуск, ресурсы CSS / JS не были найдены:

enter image description here

Когда я проверил исходный код веб-страницы, я увидел, что URL-адреса указывают на старые версии ресурсов, например /build/app.db32012d.css, а файл manifest.json ссылается на новые версии ресурсов:

{
  "build/app.css": "/build/app.2aba4862.css"
}

Я использую deployer для развертывания новых выпусков. В процессе развертывания создаются активы, работающие yarn encore prod.

Прежде всего, я попытался прогреть / очистить кэш Symfony, но все еще завис.

Когда я просматриваю сайт в среде разработчика (звонит app_dev.php), проблема исчезает.

Я пытался перезапустить Apache, но все еще завис.

Я изменил DocumentRoot VirtualHost с /var/www/current/web на /var/www/foo/web, и проблема исчезнет до следующего выпуска.

Вот мой стек:

  • Apache 2.4
  • php7.3.6-FPM
  • OPCache включен
  • HTTP2 включен

Я ожидаю, что URL-адреса ресурсов будут указывать на новые версии, как указано в файле manifest.json.

Я подозреваю, что где-то есть проблема с кешем, но не могу найти где.

1 Ответ

0 голосов
/ 15 июля 2019

Я думаю, что нашел ответ.Версионные ресурсы загружаются в шаблоны Twig с использованием функций encore_entry_link_tags и encore_entry_script_tags ( Официальный документ ).Эти функции читают из файла entrypoints.json, сгенерированного Encore, чтобы узнать точные имена файлов для рендеринга.За тезисами просто PHP.Поскольку я использую php-fpm, мне нужно перезапустить службу php-fpm, когда я разверну новые выпуски моих ресурсов:

service php7.3-fpm restart

Вот и все!

...