资产,图像资产和缓存

时间:2012-02-09 05:39:53

标签: twig assetic

我正在努力将Assetic集成到我正在构建的应用程序中。该应用程序遵循MVC模式,但不使用任何框架。 Twig用于模板化。

我已阅读文档并查看了一些helpful blog posts

应用程序的结构如下:

  • 应用
    • twig_templates
    • JS​​
    • CSS
  • 的public_html
    • JS​​
    • CSS
    • 图像

渲染树枝模板然后由应用程序返回,因此非常简单。 js文件夹下的cssapplication文件夹将保存原始javascript和css文件。

我的计划是将合并和缩小的js和css文件存储在public_html文件夹下的jscss文件夹中。

由于我不打算使用资产来优化任何图片,因此它们会直接放在images下面的public_html文件夹中。

现在的问题是:

  • 据我所知,通过使用twig中的assetic,可以将合并和缩小的资源导出到我的public_html目录:

    {% stylesheets '/path/to/sass/main.sass' filter='sass,?yui_css' output='css/all.css' %}
        <link href="{{ asset_url }}" type="text/css" rel="stylesheet" />
    {% endstylesheets %}
    

    在这种情况下,每次呈现模板时都会重新生成css/all.css文件吗?

  • 为了使应用程序可移植(可以使用虚拟主机托管,或者甚至可以在文件夹中托管)并确保在具有http://site.com/controller/action等路由URL的站点中工作,无论如何都要提供资产将图片的网址“重写”为绝对网址(即images/a.jpghttp://mysite.com/images/a.jpg)?

  • 使用嵌套模板时资产是否有效?

    parent.twig:

    <!DOCTYPE html>
    <html>
        <head>
            {% block head %}
                <link rel="stylesheet" href="mainstyle.css" />
                <title>{% block title %}{% endblock %} - My Webpage</title>
            {% endblock %}
        </head>
        <body>
        </body>
    </html>
    

    child.twig:

    {% extends "parent.twig" %}
    
    {% block title %}Index{% endblock %}
    {% block head %}
        {{ parent() }}
        <link rel="stylesheet" href="childstyle.css" />
    {% endblock %}
    

    在这种情况下,我如何让资产者知道它应该合并childstyle.cssmainstyle.css并将其作为1个文件提供?

1 个答案:

答案 0 :(得分:0)

对于这个答案,不可能将父级的继承样式表与子级组合 Combining Assetic Resources across inherited templates