项目中用destoon二次开发的时候,有新的需求就是要将destoon的模版解析输出之后,在压缩网页大小。去除掉多余的空格,空行等。这样做的好处是将页面的大小压缩很小,保证在相同的网速下,打开网页的速度更快。
注意:
1、压缩网页的时候,最好将js、jquery抽出去,不然在压缩网页的时候,可能会出现报错,不执行。
2、压缩成一行之后,可以稍微的提高菜鸟仿站的难度。
下面我们来修改destoon的文件:
处理模板文件 template()函数。
文件地址 :/include/global.func.php
function template($template = 'index', $dir = '') {...}
里面函数 template_compile();
文件地址:/include/template.func.php
function template_compile($from, $to) {}
里面调用 函数template_parse()。
function template_parse($str) {
$str = preg_replace("~>\s+\s+\r\n~", ">", $str));
//$str = ltrim(rtrim(preg_replace(array("/> *([^ ]*) *","//","'/\*[^*]*\*/'","/\r\n/","/\n/","/\t/",'/>[ ]+'),array(">\\1
return $str;
}
这里有两种压缩html代码的方式。
第一种:只压缩html代码,不压缩js,jq中的空行,换行等。
$str = preg_replace("~>\s+\s+\r\n~", ">", $str));
压缩之后的结果显示,除了js,jq的代码除外,其他的代码都是一行。
第二种:只要是页内的代码全部的压缩,包括js、jq。
$str = ltrim(rtrim(preg_replace(array("/> *([^ ]*) *","//","'/\*[^*]*\*/'","/\r\n/","/\n/","/\t/",'/>[ ]+'),array(">\\1
压缩之后的结果就是一行,不管js、jq。
这里要是页面中的js、jq都已经抽出去之后,可以使用第二种方式,这样压缩的更加的彻底。要是页面中的js、jq没有抽取干净的话,我建议还是采用第一种方式只压缩网页中除了js、jq以外的html元素。