我正在尝试使用 Symfony2 构建一个项目,并包括所有可能的优化。其中之一是优化 html 中使用的图像。Symfony2 有一个 Assetic 包,它允许使用来自 Twig 模板的例如 optipng 来实现这一点。文档在这里:http ://symfony.com/doc/2.0/cookbook/assetic/jpeg_optimize.html
我遇到的问题是一切都在开发环境中工作(所有资产都通过控制器提供服务),但是 CLI 命令转储到文件中,而不是在呈现的模板中使用。
这是转储资产时的输出,文件随后在 /web/assetic 中可用
Dumping all prod assets.
Debug mode is off.
[file+] /home/projects/dashboard/data/dashboard/app/../web/js/4a3b4dc.js
[file+] /home/projects/dashboard/data/dashboard/app/../web/css/9640074.css
[file+] /home/projects/dashboard/data/dashboard/app/../web/assetic/1d666d2.png
[file+] /home/projects/dashboard/data/dashboard/app/../web/assetic/dfaa6c9.png
[file+] /home/projects/dashboard/data/dashboard/app/../web/assetic/5f2dd31.png
当我查看页面时,这些 url 被称为
<img src="/assetic/ad39e3f.png">
<img src="/assetic/69fbd4a.png">
<img src="/assetic/e4a4ede.png">
然而,Css 和 js 确实有效。
我的配置文件:
# Assetic Configuration
assetic:
debug: %kernel.debug%
use_controller: false
java: /usr/bin/java
filters:
cssrewrite: ~
closure:
jar: %kernel.root_dir%/Resources/java/compiler.jar
yui_css:
jar: %kernel.root_dir%/Resources/java/yuicompressor-2.4.7.jar
optipng:
apply_to: "\.png$"
level: 3
jpegoptim:
apply_to: "\.jpe?g$"
strip_all: true
twig:
functions:
jpegoptim: { output: images/*.jpg }
optipng: { output: images/*.png }
我的树枝模板:
<img src="{{ optipng('@KunstmaanDashboardBundle/Resources/public/images/foursquare-logo.png') }}" style="margin-bottom: 0;" />