Ресурсы актива Symfony2 из статического домена или субдомена

Я пытаюсь оптимизировать свой проект, чтобы избежать отправки файлов cookie со статическими ресурсами (например, изображения, скрипты, таблицы стилей и т.д.). Мой подход заключается в создании домена static.my-domain.com для обслуживания оттуда всех статических ресурсов без куки файлов.

Как загрузить ресурсы из этого домена с помощью Symfony2 с помощью актива?

Я использую Symfony 2.1 RC2

Ответ 1

Включает опцию assets_base_urls, которая позволяет вам устанавливать домены ресурсов.

Ответ 2

Я добавил несколько глобальных глобулов, чтобы справиться с этим

# 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' }}.

Я точно не помню, почему я это сделал, но это было связано с сложными ошибками (какой сюрприз). Он просто не может правильно обрабатывать пути, например, иногда он не добавляет версию, или делает это неправильно.

Будет больно, если вам придется вручную модифицировать версию активов, поэтому вам лучше иметь развертывание script, готовое для этого.

О, и помните, что Assetic не будет сбрасывать скомпилированные активы в указанных каталогах, это известная проблема. Таким образом, вы должны добавить свои собственные символические ссылки для этих каталогов.

ИЗМЕНИТЬ

Параметр 'session.cookie_domain' позволяет использовать тот же домен и избегать куки файлов, если ваше приложение находится в субдомене. Если ваше приложение не использует субдомен, вам придется использовать отдельный домен для статических активов.