15

我遵循了本文最底部的指南:http: //symfony.com/doc/current/cookbook/assetic/asset_management.html

我有这个代码:

    {% javascripts
        ...

        output='js/dist/dist.js'
    %}
    <script src="{{ asset_url }}"></script>
    {% endjavascripts %}

现在,如果我运行sf assetic:dump --env=prod它会正确创建编译文件。但是,我想让它生成一个随机名称(或时间戳),以避免客户端浏览器缓存问题。现在它总是创建dist.js被缓存的文件,当我更新我的代码时,用户不会看到差异(或得到错误)。

有没有办法让它像dist12345678.js

4

3 回答 3

8

您在这里有两个选择:要么省略输出文件名(它将是一个自动生成的更改的哈希)或使用资产版本,如 Symfony 文档中所述:http://symfony.com/doc/current/reference/配置/framework.html#ref-framework-assets-version

于 2012-01-18T14:01:09.047 回答
3

我一直在为一个项目对 Assetic 进行大量试验,并且偶然发现了一种完全按照您的要求进行操作的方法。如果“输出”字符串包含“*”,则将用一个由专业生成的任意字符串代替它。

例如,我在模板中有以下内容(PHP,我们没有使用 twig):

<?php foreach($view['assetic']->javascripts(array('@MyBundle/Resources/public/js/page.js'), array(), array('output' => 'js/compiled/page_*.js')) as $url): ?>
  <script type="text/javascript" src="<?php echo $view->escape($url) ?>"></script>
<?php endforeach; ?>

<?php foreach($view['assetic']->stylesheets(array('@MyBundle/Resources/public/css/page.css'), array(), array('output' => 'css/compiled/page_*.css')) as $url): ?>
  <link rel="stylesheet" href="<?php echo $view->escape($url) ?>" />
<?php endforeach; ?>

当我运行 app/consoleassetic:dump 时,它会生成 /web/css/compiled/page_8e8fcb3.css 和 /web/js/compiled/page_241b4e5.js。

于 2012-04-04T07:34:06.787 回答
1

更好的方法是https://github.com/symfony/AsseticBundle/pull/119#issuecomment-28877145

你会得到 :

app/console assetic:dump --env=prod --no-debug
Dumping all prod assets.
Debug mode is off.

[file+] /web/assets/static-fe1927d.css
[file+] /web/assets/static-6e92057.js
于 2014-12-21T21:27:19.783 回答