我正在尝试压缩Magento生成的HTML代码:
的 Observer.php
public function alterOutput($observer)
{
$lib_path = Mage::getBaseDir('lib').'/Razorphyn/html_compressor.php';
include_once($lib_path);
//Retrieve html body
$response = $observer->getResponse();
$html = $response->getBody();
$html=html_compress($html);
//Send Response
$response->setBody($html);
}
html_compressor.php :
function html_compress($string){
global $idarray;
$idarray=array();
//Replace PRE and TEXTAREA tags
$search=array(
'@(<)\s*?(pre\b[^>]*?)(>)([\s\S]*?)(<)\s*(/\s*?pre\s*?)(>)@', //Find PRE Tag
'@(<)\s*?(textarea\b[^>]*?)(>)([\s\S]*?)(<)\s*?(/\s*?textarea\s*?)(>)@' //Find TEXTAREA
);
$string=preg_replace_callback($search,
function($m){
$id='<!['.uniqid().']!>';
global $idarray;
$idarray[]=array($id,$m[0]);
return $id;
},
$string
);
//Remove blank useless space
$search = array(
'@( |\t|\f)+@', // Shorten multiple whitespace sequences
'@(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+@', //Remove blank lines
'@^(\s)+|( |\t|\0|\r\n)+$@' //Trim Lines
);
$replace = array(' ',"\\1",'');
$string = preg_replace($search, $replace, $string);
//Replace IE COMMENTS, SCRIPT, STYLE and CDATA tags
$search=array(
'@<!--\[if\s(?:[^<]+|<(?!!\[endif\]-->))*<!\[endif\]-->@', //Find IE Comments
'@(<)\s*?(script\b[^>]*?)(>)([\s\S]*?)(<)\s*?(/\s*?script\s*?)(>)@', //Find SCRIPT Tag
'@(<)\s*?(style\b[^>]*?)(>)([\s\S]*?)(<)\s*?(/\s*?style\s*?)(>)@', //Find STYLE Tag
'@(//<!\[CDATA\[([\s\S]*?)//]]>)@', //Find commented CDATA
'@(<!\[CDATA\[([\s\S]*?)]]>)@' //Find CDATA
);
$string=preg_replace_callback($search,
function($m){
$id='<!['.uniqid().']!>';
global $idarray;
$idarray[]=array($id,$m[0]);
return $id;
},
$string
);
//Remove blank useless space
$search = array(
'@(class|id|value|alt|href|src|style|title)=(\'\s*?\'|"\s*?")@', //Remove empty attribute
'@<!--([\s\S]*?)-->@', // Strip comments except IE
'@[\r\n|\n|\r]@', // Strip break line
'@[ |\t|\f]+@', // Shorten multiple whitespace sequences
'@(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+@', //Remove blank lines
'@^(\s)+|( |\t|\0|\r\n)+$@' //Trim Lines
);
$replace = array(' ','',' ',' ',"\\1",'');
$string = preg_replace($search, $replace, $string);
//Replace unique id with original tag
$c=count($idarray);
for($i=0;$i<$c;$i++){
$string = str_replace($idarray[$i][0], "\n".$idarray[$i][1]."\n", $string);
}
return $string;
}
我的主要观点是两个:
答案 0 :(得分:1)
我不会评论或审核您的代码。解密regexes
(任何风格)不是我最喜欢的爱好。
是的,压缩 HTML 有意义,如果您的目标是提供专业服务。
如果我查看某人网站的HTML代码,其中包含大量无意义的空白内容和用户无用的评论,并且网站不尊重Google's PageSpeed Insights Rules,并且无法使网络更快更环保,那么它说对我来说:要注意,不要相信,当然不要给他们你的信用卡号码
我的建议:
benchmark
,例如运行Google Chrome > Developer tools > Audits
test
如果您的minifier不会无意中破坏页面答案 1 :(得分:0)
如果你启用了gzip压缩(并且你应该拥有它),那么这样做真的没有意义。它确实浪费了CPU周期。您应该专注于图像优化,减少http请求的数量并设置适当的缓存标头。