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

A.L*_*A.L 8 php symfony twig

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

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

Igo*_*vić 8

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

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

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

  • 嗯,nope,`compile`方法正如它所说:将节点编译为PHP.并且它肯定会编译`echo trim(preg_replace('/>\s + </','> <',ob_get_clean()))`.您可以通过使用`{%spaceless%}`创建模板并查看已编译的PHP文件来轻松检查此问题.`preg_replace`肯定会在那里. (3认同)
  • 我认为当twig模板编译成php代码时,影响只会在编译时. (2认同)