0

いくつかの動的 Web サイトを作成するために PHP を使用しています。Web ページを最適化するためのさまざまな最適化手法を見つけました。その 1 つが HTML 圧縮です。私の Web ページには、多くの JS、CSS、およびインライン スクリプトが含まれているためです。生成されるソース (HTML) の合計サイズは約 150KB になります。

しかし、生成されたページ ソースを保存し、http://htmlcompressor.com/compressor.htmlなどのサイトを使用して圧縮すると、出力ファイルは約 90KB になります (空白の改行とスペースが削除されます)。ページが生成されたときにこれを動的に行う方法はありますか? そのために利用できるヘルパーやライブラリはありますか? このトピックに関するヘルプをいただければ幸いです。

4

3 に答える 3

1

実行できる最善の方法の 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

「HTML - インライン CSS - インライン JS」をその場で (サイトのすべてのページを意味します) 圧縮できるDynamic Website Compressorと呼ばれるスクリプトに出会いました。

実際のサーバー ファイルを変更することはありません。つまり、ファイルを変更することはなく、変更の必要もありません。お役に立てば幸いです

于 2013-03-26T09:58:08.237 に答える