PHPスクリプトで出力データを圧縮する方法

PHPスクリプトで出力データを圧縮する方法についてです。

(1)出力バッファをgzip圧縮

構文
bool ob_start(callable $output_callback)

・出力のバッファリングを有効にする。

・output_callbackは、出力バッファの内容をパラメータとして受け取り、処理した結果をブラウザに送信する。

①ob_gzhandlerを使用

・出力バッファをgzip圧縮するためのob_startコールバック関数。

・実際に圧縮されたデータを送信する前にブラウザがサポートするcontent encodingの種類(“gzip”、”deflate” またはなし)を調べ、それに基づいて出力を返す。

例)
<?php
ob_start(“ob_gzhandler”);
?>
<html>
<body>
・・・・
</body>
</html>

②コールバックを自分で定義

例)

<?php
ob_start("customhandler");

function customhandler($buffer) {
  $buffer = str_replace(
    array ("\r", " ", "\n", "\t"),"");
    return $buffer;
  }
?>
<html>
<body>
・・・・
</body>
</html>

(2)zlibを使って圧縮

・このモジュールによりgzip(.gz)で圧縮されたファイルを読み書きすることが可能となる。

・php.iniまたはApacheの設定で下記オプションを設定。

①output_compression boolean/integer

・透過的なページ圧縮を行うかどうかを設定。

・このオプションが”On” に設定された場合、ブラウザが “Accept-Encoding: gzip”または”deflate” ヘッダを送信する場合に、ページは圧縮される

・”Content-Encoding: gzip”(および “deflate”)と”Vary: Accept-Encoding”ヘッダが出力に追加される。

・実行時、何らかのデータを送出する前にのみ設定することが可能。

・”On”/”Off” のかわりに整数値をとることができ、出力のバッファサイズ(デフォルトは4KB)を設定することができる。

②output_compression_level integer

・透過的出力圧縮で使用される圧縮レベル。

・0(圧縮しない)から9(最高レベルの圧縮をする)までの値を指定。

・デフォルト値の-1は、どのレベルを使用するかをサーバーで決定させる。

関連記事の目次

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です