Я следовал за гидом в самом конце этой статьи: 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
он правильно скомпилировал файл. Тем не менее, я хотел бы, чтобы он генерировал случайное имя (или timestamped), чтобы избежать проблемы с кешем браузера на стороне клиента. Сейчас он всегда создает файл dist.js
который кэшируется, и когда я обновляю свой код, пользователи не будут видеть разницу (или получить ошибки).
Есть ли способ сделать это как dist12345678.js
?
Здесь у вас есть два варианта: либо оставить имя выходного файла (это будет изменяться автоматически генерируемый хэш), либо использовать версии активов, как описано в документах Symfony: http://symfony.com/doc/current/reference/ конфигурация / framework.html # реф-рамочные-активы-версия
Я много экспериментировал с Assetic для проекта, и я наткнулся на способ сделать именно то, что вы просите. Если строка «output» содержит «*», вместо нее заменяется дернистически созданная произвольная строка.
Например, у меня есть следующее в шаблоне (PHP, мы не используем ветку):
<?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 / console assetic: дамп, он генерирует /web/css/compiled/page_8e8fcb3.css и /web/js/compiled/page_241b4e5.js.
Лучшим подходом является 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