0

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

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

4

3 回答 3

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();

正如代码所说,如果您已经发送了标头 - 如果您已经发送了任何输出,基本上,那么此代码不会为您压缩任何内容。

于 2012-09-20T17:57:29.543 回答
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>

它将被正确压缩;)

于 2013-04-09T12:49:07.883 回答
0

我遇到了一个称为动态网站压缩器的脚本,它可以在 FLY 上压缩您的“HTML - 内联 CSS - 内联 JS”(意味着您网站的每个页面)。

它不会修改您的实际服务器文件中的任何内容,或者换句话说,它不会修改您的文件并且不需要修改。我希望它可以帮助你

于 2013-03-26T09:58:08.237 回答