我正在使用PHP创建一些动态网站。我已经遇到各种优化技术来优化我的网页。其中一个是HTML压缩。由于我的网页上有很多JS,CSS和内联脚本。生成的源(HTML)的总大小约为150KB。
但是,如果我保存生成的页面源,并使用某些网站(如http://htmlcompressor.com/compressor.html进行压缩),则输出文件大约为90KB(空行换行和空格被删除)。那么在生成页面时有没有办法动态地执行此操作?有没有可用的助手或图书馆?对此主题的任何帮助将不胜感激。
答案 0 :(得分:1)
您可以做的最好的事情之一是删除任何不需要内联的内联脚本。
我在PHP文件的顶部有这个:
ob_start();
ob_implicit_flush(0);
然后我包括这个功能:(我的笔记没有说明我从哪里偷了它)
function print_gzipped_page() {
$HTTP_ACCEPT_ENCODING = $_SERVER["HTTP_ACCEPT_ENCODING"];
if( headers_sent() )
$encoding = false;
else if( strpos($HTTP_ACCEPT_ENCODING, 'x-gzip') !== false )
$encoding = 'x-gzip';
// *** I can't recall why I disabled this one ***
// I had some device that it didn't work with.
//else if( strpos($HTTP_ACCEPT_ENCODING,'gzip') !== false )
// $encoding = 'gzip';
else {
$encoding = false;
}
$contents = ob_get_clean();
if ($encoding)
{
$_temp1 = strlen($contents);
if ($_temp1 < 2048) { // no need to waste resources in compressing very little data
print($contents);
} else {
header('Content-Encoding: '.$encoding);
print("\x1f\x8b\x08\x00\x00\x00\x00\x00");
$contents = gzcompress($contents, 9);
$contents = substr($contents, 0, $_temp1);
print($contents);
}
}
else {
print($contents);
}
}
在页面的最底部,我只是致电:
print_gzipped_page();
正如代码所说,如果你已经发送了标题 - 如果你已经发送了任何输出,那么基本上,这段代码不为你压缩任何内容。
答案 1 :(得分:0)
我遇到了一个名为Dynamic Website Compressor的脚本,它可以在FLY上压缩你的'HTML - 内联CSS - 内联JS'(意味着你网站的每一页)。
它不会修改您的实际服务器文件中的任何内容,换句话说,它不会修改您的文件,也不需要修改。我希望它可以帮到你
答案 2 :(得分:0)
您提到的网站已经为您提供了解决方案。考虑一下,而不是压缩PHP文件的HTML输出,让它们生成已经压缩的HTML。通过这种方式,您不会浪费额外的资源来压缩输出,因为您已经这样做了。
我使用HTMLCompressor压缩WordPress主题PHP文件,它就像一个魅力。只需从代码类型列表中选择 x / html + PHP 即可。
请注意,它不会压缩PHP字符串中包含的HTML代码,因此如果您的PHP文件以这种方式生成代码:
<?php
echo '<div>';
echo ' <b> Some number is ' . $num . ' </b>';
echo '</div>';
?>
将其更改为:
<div>
<b> Some number is <?php echo $num; ?> </b>
</div>
它将被正确压缩;)