我正在尝试优化我的WP网站上的页面负载。我复制了一个自定义函数(不记得是从哪里提取的)来优化我的页面。
它可以做到以下几点:
将javascript移动到页脚,将css链接放在页眉上,折叠空格,删除html注释,该功能很好地发挥了作用,但当我安装并激活WordPress SEO插件时(v2.2.1), 自定义函数不再缩小我的html页面。
我说的自定义代码是:
class WP_HTML_Compression
{
// Settings
protected $compress_css = true;
protected $compress_js = true;
protected $info_comment = true;
protected $remove_comments = true;
// Variables
protected $html;
public function __construct($html)
{
if (!empty($html))
{
$this->parseHTML($html);
}
}
public function __toString()
{
return $this->html;
}
protected function bottomComment($raw, $compressed)
{
$raw = strlen($raw);
$compressed = strlen($compressed);
$savings = ($raw-$compressed) / $raw * 100;
$savings = round($savings, 2);
return \'<!--HTML compressed, size saved \'.$savings.\'%. From \'.$raw.\' bytes, now \'.$compressed.\' bytes-->\';
}
protected function minifyHTML($html)
{
$pattern = \'/<(?<script>script).*?<\\/script\\s*>|<(?<style>style).*?<\\/style\\s*>|<!(?<comment>--).*?-->|<(?<tag>[\\/\\w.:-]*)(?:".*?"|\\\'.*?\\\'|[^\\\'">]+)*>|(?<text>((<[^!\\/\\w.:-])?[^<]*)+)|/si\';
preg_match_all($pattern, $html, $matches, PREG_SET_ORDER);
$overriding = false;
$raw_tag = false;
// Variable reused for output
$html = \'\';
foreach ($matches as $token)
{
$tag = (isset($token[\'tag\'])) ? strtolower($token[\'tag\']) : null;
$content = $token[0];
if (is_null($tag))
{
if ( !empty($token[\'script\']) )
{
$strip = $this->compress_js;
}
else if ( !empty($token[\'style\']) )
{
$strip = $this->compress_css;
}
else if ($content == \'<!--wp-html-compression no compression-->\')
{
$overriding = !$overriding;
// Don\'t print the comment
continue;
}
else if ($this->remove_comments)
{
if (!$overriding && $raw_tag != \'textarea\')
{
// Remove any HTML comments, except MSIE conditional comments
$content = preg_replace(\'/<!--(?!\\s*(?:\\[if [^\\]]+]|<!|>))(?:(?!-->).)*-->/s\', \'\', $content);
}
}
}
else
{
if ($tag == \'pre\' || $tag == \'textarea\')
{
$raw_tag = $tag;
}
else if ($tag == \'/pre\' || $tag == \'/textarea\')
{
$raw_tag = false;
}
else
{
if ($raw_tag || $overriding)
{
$strip = false;
}
else
{
$strip = true;
// Remove any empty attributes, except:
// action, alt, content, src
$content = preg_replace(\'/(\\s+)(\\w++(?<!\\baction|\\balt|\\bcontent|\\bsrc)="")/\', \'$1\', $content);
// Remove any space before the end of self-closing XHTML tags
// JavaScript excluded
$content = str_replace(\' />\', \'/>\', $content);
}
}
}
if ($strip)
{
$content = $this->removeWhiteSpace($content);
}
$html .= $content;
}
return $html;
}
public function parseHTML($html)
{
$this->html = $this->minifyHTML($html);
if ($this->info_comment)
{
$this->html .= "\\n" . $this->bottomComment($html, $this->html);
}
}
protected function removeWhiteSpace($str)
{
$str = str_replace("\\t", \' \', $str);
$str = str_replace("\\n", \'\', $str);
$str = str_replace("\\r", \'\', $str);
while (stristr($str, \' \'))
{
$str = str_replace(\' \', \' \', $str);
}
return $str;
}
}
function wp_html_compression_finish($html)
{
return new WP_HTML_Compression($html);
}
function wp_html_compression_start()
{
ob_start(\'wp_html_compression_finish\');
}
add_action(\'get_header\', \'wp_html_compression_start\');
在我的函数中使用此函数。php将我的页面大小减少到几乎5%。