11

静的リソース (画像、スクリプト、スタイルシートなど) で Cookie を送信しないようにプロジェクトを最適化しようとしています。私のアプローチは、 static.my-domain.com ドメインを作成して、そこからすべての静的リソースを Cookie なしで提供することです。

アセットを使用して Symfony2 を使用して、このドメインからリソースをロードするにはどうすればよいですか?

Symfony 2.1 RC2 を使用しています

4

2 に答える 2

4

アセット ドメインを設定できる assets_base_urls オプションがあることがわかりました。

于 2012-09-01T15:29:23.927 に答える
1

これに対処するためにいくつかの小枝グローバルを追加しました

# config.yml
framework:
    templating:
        engines: ['twig']
        assets_version: 'dev'
        assets_version_format: "%%2$s/%%1$s"
    session:
        cookie_domain:        %session.cookie_domain%
twig:
    globals:
        assets_version: dev
        static_assets_base_url: %static_assets_base_url%
        static_images_base_url: %static_images_base_url%
        static_image: %static_images_base_url%/dev/ # I didn't know how to reference the assets_version, so this is the same value
        static_content: %static_images_base_url%/

# parameters.yml
parameters:
    session.cookie_domain: .myapp.dev
    static_assets_base_url: http://myapp-static.dev
    static_images_base_url: http://myapp-static.dev/path/to/web
  • バージョン管理およびコンパイルされた css/js などについては、 を出力します{{ static_assets_base_url ~ asset_url }}
  • バージョン管理された画像などについては、 を印刷します{{ static_image ~ 'bundles/mybundle/img/icon.jpg' }}
  • バージョン管理されていない画像などについては、 を印刷します{{ static_content ~ 'content/img/upload-123.jpg' }}

なぜこれを行ったのか正確には覚えていませんが、資産のバグに関連していました (驚きです)。バージョンを追加しない場合や、間違って追加する場合があるように、パスを正しく処理できないだけです。

アセットのバージョンを手動で変更する必要がある場合は面倒なので、これを行うためのデプロイ スクリプトを用意しておくことをお勧めします。

ああ、Assetic はコンパイルされたアセットを指定されたディレクトリにダンプしないことに注意してください。これは既知の問題です。したがって、これらのディレクトリに独自のシンボリック リンクを追加する必要があります。

編集

アプリがサブドメインにある場合、「session.cookie_domain」パラメーターを使用すると、同じドメインを使用して Cookie を回避できます。アプリがサブドメインを使用していない場合は、静的アセット用に別のドメインを使用する必要があります。

于 2012-09-02T16:55:42.270 に答える