我正在尝试优化我的项目以避免使用静态资源发送cookie(即:图像,脚本,样式表等)。我的方法是创建一个static.my-domain.com域,从那里提供没有cookie的所有静态资源。
如何使用资产使用Symfony2从此域加载资源?
我正在使用Symfony 2.1 RC2
答案 0 :(得分:4)
原来有assets_base_urls个选项可供您设置资源域。
答案 1 :(得分:1)
我添加了一些twig globals来处理这个
# 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
{{ 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。如果您的应用未使用子域,则必须为静态资产使用单独的域。