プログラム
Apache の mod_gzip モジュールを使用すると、gzip 圧縮アルゴリズムを使用して、Apache サーバーによって公開された Web ページのコンテンツを圧縮し、クライアントのブラウザに送信できます。純粋なテキスト コンテンツの場合、その効果は非常に明白で、元のサイズの約 30% ~ 40% に圧縮でき、ユーザーの閲覧速度が大幅に向上します。
Gzip にはクライアント ブラウザのサポートが必要です。現在、IE、Netscape、Mozilla などのほとんどのブラウザが gzip をサポートしているため、この方法は試してみる価値があります。 PHP で事前定義された変数 $_SERVER[‘HTTP_ACCEPT_ENCODING’] を使用して、クライアントのブラウザーが gzip をサポートしているかどうかを判断できます。
gzip1.php
if(ereg('gzip',$_SERVER['HTTP_ACCEPT_ENCODING'])) {
//ブラウザはサポートしています
} else {
//ブラウザはサポートしていないので、他のコンテンツを出力します
}
>?
次に、上記の PHP プログラムを拡張し、ob_start(ob_gzhandler) を使用して Web ページのコンテンツを圧縮し、バッファーに保存して、gzip をサポートするブラウザーに送信します。ブラウザーは、圧縮されたコンテンツを自動的に解凍して表示します。
gzip2.php
define('MAX',100);
if(ereg('gzip',$_SERVER['HTTP_ACCEPT_ENCODING']))
{
//ブラウザは gzip をサポートし、コンテンツを圧縮してバッファリングしますOutput
ob_start("ob_gzhandler");
$output = '';
for($i=0;$i<=MAX;$i++)
{
$output .= "これは $i 行です "; }
echo "ブラウザは gzip 圧縮出力をサポートしています";
echo $output;
else
{
//ブラウザはサポートしていません、直接出力します
for($i=0;$i<=MAX;$ i++)
{
$output .= "これは $i 行です ";
}
echo "ブラウザは gzip 圧縮出力をサポートしていません";
echo $output
}
?>
Web ページの HTTP ヘッダーgenerated using gzip Compression 通常の Web ページと比較すると、次のような情報が多くなります:
Content-Encoding: gzip
Content-Length: 270
より詳細な情報を取得したい場合は、mod_gzip プロジェクトのホームページを参照してください:
http://sourceforge .net/projects/mod-gzip/
同様に、mod_deflate も使用できますが、圧縮率は mod_gzip よりわずかに低くなります。 zip 関数の呼び出しにはサーバー メモリが必要なため、必要に応じて注意して使用してください。