为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Webpack Encore 和 Symfony3.4 在 prod 中找不到资产

使用 Webpack Encore 和 Symfony3.4 在 prod 中找不到资产

PHP
翻翻过去那场雪 2021-09-18 21:38:06
我开发了一个基于 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并且问题消失,直到下一个版本。这是我的堆栈:阿帕奇 2.4php7.3.6-fpm启用 OPCache启用 HTTP2我希望资产 URL 指向manifest.json文件中指定的新版本。我怀疑某处存在缓存问题,但我找不到。
查看完整描述

1 回答

?
莫回无

TA贡献1865条经验 获得超7个赞

我想我找到了答案。版本化资产使用函数encore_entry_link_tagsencore_entry_script_tags官方文档)加载到 Twig 模板中。这些函数从entrypoints.jsonEncore 生成的文件中读取,以了解要渲染的确切文件名。在论文后面它只是 PHP。当我使用 php-fpm 时,我必须在部署新版本的资产时重新启动服务 php-fpm:

service php7.3-fpm restart

就是这样!


查看完整回答
反对 回复 2021-09-18
  • 1 回答
  • 0 关注
  • 189 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信