3

現在、symfony2 に基づいてサイトの設計を行っています。質問は、css ファイルのキャッシュを無効にする方法です。cssファイルで何かを変更しても、ブラウザでは何も変わりません。cache:clear しようとすると、まだ何もありません。

config.yml :

# Assetic Configuration
assetic:
debug:          "%kernel.debug%"
use_controller: true
#bundles:        [ ]
#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"

そして小枝で

    {% stylesheets filter="cssrewrite" output="css/general.css"
        "@EveCommonBundle/Resources/public/css/main.css" 
        "@EveCommonBundle/Resources/public/css/another.css" %}
    <link rel="stylesheet" type="text/css" href="{{ asset_url }}" />
    {% endstylesheets %}

ブラウザで「最新」の css ファイルを取得するには、何を変更する必要がありますか?

問題は、私が変更@EveCommonBundle/Resources/public/css/main.cssしてweb/cssも古いもの(端末によってダンプされたもの)のままであり、再作成されていないことです。そのため、ブラウザに「新しい変更」が表示されず、そのファイルを再作成できます...どうすればよいですかsf2 は、ブラウザー (web/cssフォルダー内) の各 F5 で css ファイルを再作成しますか?

4

4 に答える 4

4

開発環境では、つまり、を介してサイトにアクセスするapp_dev.phpと、アセットへのパスが動的に生成されるため、各変更がすぐに表示されます。

次のコマンドを使用してアセットを自動的に作成できます(これについて詳しくは、クックブックを参照してください。以下のリンクを参照してください)が、通常、これは必要ありません。

php app/console assetic:dump --watch

アセットを使用していて、prod-environmentでの変更を確認したい場合は、最初にアセットをダンプしてアクセス可能にする必要があります。

php app/console assetic:dump --env=prod --no-debug

詳細については、クックブックの「アセット管理にアセットを使用する方法」の「アセットファイルのダンプ」セクションを参照してください。

他のすべてが失敗した場合は、テンプレートで次を使用することをお勧めします。

{% if app.environment == 'prod' %}{% else %}{% endif %}

実稼働環境でのみアセットを使用します。

于 2013-01-26T16:30:31.043 に答える
4

問題は.... うーん、何のことかさえわかりません。現在の config.yml およびコンソール コマンドは、その仕事を完了しました。(つまり、CSS を変更すると、ブラウザで「オンライン モード」として表示されます)

assets:install web --symlink
assetic:dump web

config.yml のパーツ

# Twig Configuration
twig:
    cache:            false

# Assetic Configuration
assetic:
    assets: 
        default_css:
            inputs:
                - '%kernel.root_dir%/Resources/public/css/default.css'

    debug:          "%kernel.debug%"
    use_controller: true
    bundles:        []
    #java: /usr/bin/java
    filters:
        cssrewrite: ~

また、役立ちます(多分、わかりません)

// If you don't want to setup permissions the proper way, just uncomment the following PHP line
// read http://symfony.com/doc/current/book/installation.html#configuration-and-setup for more information

umask(0000);

小枝では、このように見えます

{% stylesheets "@default_css" filter="cssrewrite" %}
    <link href="{{ asset_url }}" type="text/css" media="all" rel="stylesheet" />
{% endstylesheets %}   

このパラメーターを使用すると、css から任意のデータを作成\編集\削除でき、すぐにブラウザーに表示されます。

PS: 「一般的ではない」コードを示しました。config.yml の他の設定は、基本的なものと同じだと思います。

于 2013-03-29T16:54:39.637 に答える
1

キャッシュは、ブラウザの標準的な動作です。毎回手動でクリアするか、キャッシュ マニフェストを設定することができます : https://developer.mozilla.org/en-US/docs/HTML/Using_the_application_cache?redirectlocale=en-US&redirectslug=Offline_resources_in_Firefoxどこでもサポートされています。

ファイルのキャッシュを無効にする簡単な方法は、ファイルが変更されるたびに URL を変更することです。ランダムな文字列またはバージョン番号を href に追加できます。

<link rel="stylesheet" type="text/css" href="{{ asset_url }}?{{some_random_string_goes_here}}=0" />

また

<link rel="stylesheet" type="text/css" href="{{ asset_url }}?VERSION={{version_number}}" />

css を変更するたびに手動でバージョン番号を更新する必要がないため、ランダム文字列はデバッグ目的でより単純です。ただ、紐の大きさによっては運悪く同じ紐が2回出てしまうことも…。

于 2013-01-26T16:16:18.663 に答える
0

dev で symfony 2 アセットを使用している場合。次のコマンドを使用します。

php app/console assets:install
php app/console assetic:dump --watch

参照元: http://symfony.com/doc/2.1/cookbook/assetic/asset_management.html#dumping-asset-files-in-the-dev-environment

于 2013-03-12T10:13:08.653 に答える