Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 来自静态域或子域的Symfony2资产资源_Php_Caching_Symfony_Twig_Symfony 2.1 - Fatal编程技术网

Php 来自静态域或子域的Symfony2资产资源

Php 来自静态域或子域的Symfony2资产资源,php,caching,symfony,twig,symfony-2.1,Php,Caching,Symfony,Twig,Symfony 2.1,我试图优化我的项目,以避免发送带有静态资源(即:图像、脚本、样式表等)的cookie。我的方法是创建一个static.My-domain.com域,从那里提供所有静态资源,而不使用cookie 如何使用Symfony2 using asset从该域加载资源? 我正在使用Symfony 2.1 RC2,结果发现有一个选项允许您设置资产域。我添加了一些twig globals来处理这个问题 # config.yml framework: templating: engines

我试图优化我的项目,以避免发送带有静态资源(即:图像、脚本、样式表等)的cookie。我的方法是创建一个static.My-domain.com域,从那里提供所有静态资源,而不使用cookie

如何使用Symfony2 using asset从该域加载资源?


我正在使用Symfony 2.1 RC2,结果发现有一个选项允许您设置资产域。

我添加了一些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
  • 对于版本化和编译的css/js等,我打印
    {{static\u assets\u base\u url~asset\u url}}
  • 对于版本化图像等,我打印
    {{static_image~'bundles/mybundle/img/icon.jpg'}
  • 对于非版本图像等,我打印
    {{static_content~'content/img/upload-123.jpg'}
我不记得我为什么这么做了,但这与资产臭虫有关(真令人惊讶)。它只是不能正确地处理路径,比如有时它没有添加版本,或者它做得不对

如果您必须手动修改资产版本,这将是一件痛苦的事情,因此您最好准备好一个部署脚本来完成这项工作

哦,请记住,Assetic不会将已编译的资产转储到指定的目录中,这是一个已知的问题。因此,您必须为这些目录添加自己的符号链接

编辑


“session.cookie\u domain”参数允许您使用相同的域并避免cookie(如果您的应用程序位于子域中)。如果您的应用程序未使用子域,则必须为静态资产使用单独的域。

图像是资产,请使用asset()函数加载它们。此答案没有关于如何从子域为Symfony资产提供服务的信息。您刚刚在配置下提供了一个选项。如何实现这一点?