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

ここには2つのオプションがあります:Symfonyのドキュメントで説明されているように、出力ファイル名を省略するか(自動生成されたハッシュが変更されます)、アセットバージョンを使用します:http ://symfony.com/doc/current/reference/ configuration / 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/console assetic: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 に答える