压缩PHP生成的动态HTML

时间:2012-09-20 17:49:07

标签: php html html-compression

我正在使用PHP创建一些动态网站。我已经遇到各种优化技术来优化我的网页。其中一个是HTML压缩。由于我的网页上有很多JS,CSS和内联脚本。生成的源(HTML)的总大小约为150KB。

但是,如果我保存生成的页面源,并使用某些网站(如http://htmlcompressor.com/compressor.html进行压缩),则输出文件大约为90KB(空行换行和空格被删除)。那么在生成页面时有没有办法动态地执行此操作?有没有可用的助手或图书馆?对此主题的任何帮助将不胜感激。

3 个答案:

答案 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>

它将被正确压缩;)