将html页面压缩之后,可以大大提升页面的加载速度,下面的压缩代码去掉了页面中的所有空格、注释、制表符、换行符等等比较多余的字符,下面的代码是写以在thinkphp5中为例的,不过在他PHP程序是通用的,也可以进行自定义的扩展。
1、找到thinkphp5框架中的框架View类(/think/library/response/View.php),修改类中的output方法,代码如下:
代码语言:javascript复制 /**
* 处理数据
* @access protected
* @param mixed $data 要处理的数据
* @return mixed
*/
protected function output($data)
{
// 渲染模板输出
$outputHtml = ViewTemplate::instance(Config::get('template'), Config::get('view_replace_str'))
->fetch($data, $this->vars, $this->replace);
/* 自定义页面压缩,下面这段代码对PHP通用,可以进行自定义扩展封装
* 如果要使用压缩,请将IS_PAGE_ZIP定义在公共加载的文件中
* */
if(defined('IS_PAGE_ZIP') && IS_PAGE_ZIP){
$outputHtml = str_replace("rn", '', $outputHtml); //清除换行符
$outputHtml = str_replace("n", '', $outputHtml); //清除换行符
$outputHtml = str_replace("t", '', $outputHtml); //清除制表符
$pattern = [
"/> *([^ ]*) *</", //去掉注释标记
"/[s] /",
"/<!--[^!]*-->/",
"/" /",
"/ "/",
"'/*[^*]**/'"
];
$replace = [
">\1<",
" ",
"",
""",
""",
""
];
$outputHtml = preg_replace($pattern, $replace, $outputHtml);
$outputHtml = eval('?>'.preg_replace("/;*s*?>/", "; ?>", str_replace('<?=', '<?php echo ', $outputHtml)));
}
return $outputHtml;
}
2、在页面公共部分或者你需要使用页面压缩的模块设置一个宏变量进行标记,我的如下
代码语言:javascript复制 //设置开启页面压缩,true为开启页面压缩,false相反
define('IS_PAGE_ZIP', false);
3、最后压缩后的效果如下图: