9

質問

Symfony2でファイルごとに assets_version を使用することは可能ですか?

バックグラウンド

assets_version とassets_version_formatを使用してファイルのバージョンを管理し、CDN とブラウザー キャッシュのキャッシュ更新を強制します。

assets_versionこれは見事に機能していますが、使用されるすべての静的リソースに対して1 つのパラメーターしかないことがわかりました。

私たちのウェブアプリには大量の静的リソースがあり、毎日本番環境に変更をデプロイしているため、これは問題です。この状況はキャッシュを殺します。:(

これが現在の構成です。

config.yml

framework:
   
    templating:
        engines: ['twig']
        assets_version: %assets_version%
        assets_version_format:  "stv%%2$s/%%1$s"

# Assetic Configuration
assetic:
    debug:          %kernel.debug%
    use_controller: false
    # java: /usr/bin/java
    filters:
         cssrewrite: ~
         closure:
             jar: %kernel.root_dir%/java/compiler.jar
         yui_css:
             jar: %kernel.root_dir%/java/yuicompressor-2.4.6.jar

sometemplate.html.twig

    {% stylesheets 'bundles/webapp/css/funCommon.css'
                       'bundles/webapp/css/funMobile.css'
                       filter='?yui_css'
        %}
        <link rel=stylesheet href='{{ asset_url }}'>
        {% endstylesheets %}
    
    {% javascripts 'bundles/webapp/js/app.js'
                   'bundles/webapp/js/utils.js'
                    filter='?closure'  %}
        <script src="{{ asset_url }}"></script>
        {% endjavascripts %}

{% javascripts 'bundles/webapp/js/moduleX.js'
                   'bundles/webapp/js/utilsX.js'
                    filter='?closure'  %}
        <script src="{{ asset_url }}"></script>
        {% endjavascripts %}

css ファイル、モジュール JS、またはその他のファイルを変更すると、すべてのパスが変更されます。

assets_version_format の version パラメータを javascript/stylesheet twig タグのパラメータで管理したいです。

これは私が探しているものです:

{% javascripts 'bundles/webapp/js/app.js'
               'bundles/webapp/js/utils.js'
                filter='?closure' **version='XX'** %}
    <script src="{{ asset_url }}"></script>
    {% endjavascripts %}
  
4

4 に答える 4

17

何日も検索した後、パッケージオプションが見つかりましたAsseticBundle

http://symfony.com/doc/2.0/reference/configuration/framework.html#full-default-configuration

その構成オプションを使用すると、次のようなことができます。

{% javascripts file package='packageName' %}

また

{{asset(file,packageName)}}

サンプル:

config.yml

framework:

    templating:
        engines: ['twig']
        assets_version: %assets_version%
        assets_version_format:  "stv%%2$s/%%1$s"
        packages:
             css:
                version: 6.1
                version_format: "stv%%2$s/%%1$s"
             jsApp:
                version: 4.2
                version_format: "stv%%2$s/%%1$s"

sometemplate.html.twig

<link rel=stylesheet href='{{ asset('bundles/webapp/css/funCommon.css','css') }}'>

{% javascripts 'bundles/webapp/js/app.js'
               'bundles/webapp/js/utils.js'
                filter='?closure'
                package='jsApp'
 %}
    <script src="{{ asset_url }}"></script>
 {% endjavascripts %}

これの出力は次のとおりです。

<link rel=stylesheet href="http://static.domain.com/stv6.1/css/HASH.css">

<script src="http://static.domain.com/stv4.2/js/HASH.js"></script>

私にとって、これがアセットのバージョンをファイルごとに管理する最も簡単な方法でした。

于 2013-07-29T18:59:47.827 に答える
4

javascriptsまたはstylesheetsヘルパーでassets_versionパラメーターを使用しようとしている場合でも、 assetヘルパーも使用する必要があります。

{% javascripts 'bundles/webapp/app.js'
               'bundles/webapp/utils.js'
               filter='?closure' %}
    <script src="{{ asset(asset_url) }}" type="text/javascript"></script>
{% endjavascripts %}

asset_urlに自動的に追加されることはありません(これは良いことです)。

于 2015-01-12T10:47:03.737 に答える