在Twig模板中调用{%spaceless%}的性能成本

时间:2014-01-13 19:30:53

标签: php symfony twig

我有许多Twig模板,其中包含许多级别的块,这些块使用制表符进行缩进。最终结果是一个包含许多行(3700+)的HTML文件,其开头包含多达10个制表符。手动删除选项卡后,文件缩小了25%。我知道我可以使用{% spaceless %}函数来包装此代码并删除所有必需的选项卡/空格。我也知道还有其他解决方案,比如在多个文件中分隔代码然后包含它们,但这需要更多的工作。

我的问题是关于性能,用{% spaceless %}删除这些空格会有成本,但我很确定只有一次操作,当Twig编译器将转换PHP文件中的Twig文件时在缓存中。所以它应该对prod网站没有负面影响。我的开发环境太慢,无法比较{% spaceless %}的存在。您能否确认我使用{% spaceless %}不会减慢我的网站速度?

1 个答案:

答案 0 :(得分:8)

使用无空间对您的模板渲染性能产生负面影响,当您查看compile方法实现时,很容易理解为什么:Spaceless Node Twig

因此,您的模板不仅要回显输出,还必须启动输出缓冲,然后打印节点内容,最后在缓冲内容上执行preg_replace 以删除html标记之间的空格。

总而言之,它会产生负面影响,但我真的不确定它有多大。但是,您可以创建一些preg_replace测试,看它是否会对您产生重大影响。