thinkphp自带模版的去除空白与注释(更新)
使用框架模版,有一个配置参数是TMPL_STRIP_SPACE
,官方的说明是:
'TMPL_STRIP_SPACE' =>; false, // 是否去除模板文件里面的html空格与换行
就是说在渲染tpl的时候能够去除空白,从而就能减少服务器加载php编译后的模版文件的时间,也能使服务器返回给浏览器的document减少.
在源码文件ThinkPHP/Lib/ThinkTemplate/ThinkTemplate.class.php
中的compiler
函数处,用到了这个配置选项,部分代码如下:
//...
if (C('TMPL_STRIP_SPACE')) {
/* 去除html空格与换行 */
$find = array("~>;\s+<~", "~>;(\s+\n|\r)~");
$replace = array(">;<", ">;");
$tmplContent = preg_replace($find, $replace, $tmplContent);
}
//...
可以看到框架只是简单的去除了回车和标签之间的空白数据. 而我们想要的是在发布环境一并支持注释掉写在tpl里面的html和js的注释
这里就不多废话了,直接献上正则~
//html标准注释
/<!--[^!]*-->;/i
//类js注释
/\/\*[^*]*\*\//i
最后修改这一个代码片段为:
if (C('TMPL_STRIP_SPACE')) {
/* 去除html空格与换行 */
$find = array("~>;\s+<~", "~>;(\s+\n|\r)~", "/<!--[^!]*-->;/i", '/\/\*[^*]*\*\//i');
$replace = array(">;<", ">;", "", "");
$tmplContent = preg_replace($find, $replace, $tmplContent);
}
这样在开启这个选项的时候就可以更加的节省渲染的文件大小,加快磁盘读取效率啦~输出的时候也不会给别人看到自己开发时候写的代码流程注释了= =~
经测试,一个200行的模版文件开启之前是13K,开启之后的文件是9K,优化率为:0.7.还是很有用处的~
20120911更新:今天和大大在github讨论了下这个放发,不太可行,因为有可能有需要显示的/**/代码也会被去掉,而html的话有着这样的用法,也不能去掉.所以到底起不起用这个方式就还得再讨论了.至少如果对自己的代码注释风格没有统一的话还是最好不要用 以上!
原创文章,转载请说明出处: [原文地址]({{ page.url }})