【问题标题】:Symfony2 and Assetic - cssrewrite works perfectly for dev, not for prodSymfony2 和 Assetic - cssrewrite 非常适合开发,而不是产品
【发布时间】:2012-12-13 22:21:45
【问题描述】:

我将我的 CSS 包含在以下代码中:

{% stylesheets 'bundles/majorproductionssewingdivasite/css/*.css' filter='cssrewrite' %}
    <link rel="stylesheet" type="text/css" href="{{ asset_url }}" />
{% endstylesheets %}

在开发中,这让我可以毫无问题地使用图像精灵。我的精灵的结果 URL 是:

http://localhost/diva/web/bundles/majorproductionssewingdivasite/images/diva-sprites.jpg

但是,在 prod 中,它被映射到:

http://localhost/diva/bundles/majorproductionssewingdivasite/images/diva-sprites.jpg

请注意缺少 web 目录。

CSS 文件中生成的代码是应有的,我所有的 CSS(开发“块”和最终的产品资产转储)都位于 web/css/。关于为什么 prod 环境跳过 web 目录的任何想法?

编辑:奇怪的是 dev 和 prod 在 CSS 本身中生成相同的 URL:

url('../../bundles/majorproductionssewingdivasite/images/diva-sprites.jpg')

【问题讨论】:

    标签: php symfony assetic


    【解决方案1】:

    解决方案是将资产转储到 prod 环境中:

    $ app/console assetic:dump --env=prod
    

    【讨论】:

    • 这是正确答案。但是您可能也需要先清除缓存php app/console cache:clear --env=prod。在清理缓存之前转储资产文件并没有解决我的问题。我对 Symfony2 有点陌生,但从我刚刚经历的情况来看,它似乎是从缓存中转储资产文件,而不是从物理文件中转储。
    • 天哪,我怎么能错过这个@_@
    【解决方案2】:

    记得清除缓存

    php app/console cache:clear --env=prod --no-debug
    

    伯乐

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

    【讨论】:

      【解决方案3】:

      还记得在你的 config_prod.yml 设置中适当配置资产,如下所示:

      assetic:
          use_controller: false
      

      编辑: 正如Symfony docs 中所说(实际上在章节中指的是开发环境):告诉 Symfony 停止尝试动态处理这些文件

      【讨论】:

      • 请提供一些额外的细节,以使您的回复完整
      • 你是对的,但是通常的配置已经是use_controller: '%kernel.debug%'
      【解决方案4】:

      在调试模式下,Assetic 1.1 似乎也重写了 CSS,即使它不在 {% stylesheets %} 标记中。因此,当您在生产环境中关闭调试时,值得检查一下。

      【讨论】:

        猜你喜欢
        • 2013-11-12
        • 1970-01-01
        • 2013-03-16
        • 1970-01-01
        • 2018-07-29
        • 2014-08-06
        • 1970-01-01
        • 2023-01-18
        • 2012-05-31
        相关资源
        最近更新 更多