[PHP] コンテンツを gzip 圧縮転送する

Posted by
ぴろり
Posted at
2007/06/14 20:56
Trackbacks
関連記事 (0)
Post Comment
コメントできます
Category
開発メモ カテゴリ

 Web サーバから送出されるコンテンツを gzip 圧縮することで、転送量の削減とサイトのレスポンス向上が期待できます。最近の Web ブラウザであれば、この gzip 圧縮転送に対応しているものが多いので、導入を検討する価値は十分にあると思います。特に PHP でサイトを構築されているのであれば、スクリプトに数行書き加えるだけで簡単にこれを実現できます。

この記事を Delicious に追加する   このエントリーをはてなブックマークに追加  

方法

 PHP で記述された各ページの最初に以下のように追記するだけです。ob_start は PHP によって出力されるコンテンツを一旦、バッファに溜め置くことを指示します。また、ここで ob_gzhandler を指定することで、バッファのコンテンツを gzip 圧縮するよう指示しています。ob_gzhandler は Web ブラウザからのリクエストを適切に判断して、gzip 圧縮転送に対応していないブラウザに対しては、コンテンツをそのまま返すようになっています。

<?php
	ob_start ("ob_gzhandler");
?>

効果のほどは?

 亜細亜ノ蛾を参考に、このサイトでもトップページや個々の記事などの殆ど全てのページで圧縮転送を有効にしてみました。MovableTypeでは各アーカイブテンプレートの最初に上のコードを書き足して再構築します。

 上の図は圧縮転送を有効にする前後での転送量の変化を示したグラフになります。一日あたりの転送量について数値の変化を見ると、圧縮転送の導入前で平均118,720KBytesだったものが、導入後には平均90,775KBytesと、ほぼ 3/4 になりました。サイトの訪問者数(Sites, Visits)や閲覧数(Pages,Files,Hits)にはほぼ変化がありませんから、圧縮転送によって転送量が削減されたと考えることができます。これはなかなか効果覿面です。
 是非、お試しあれ。

 今度は gzip 圧縮動作がサーバの CPU リソースを消費するため、キャッシュを生成したり If-Modified-Since ヘッダを考慮するなどの施策も必要です。

この記事を Delicious に追加する   このエントリーをはてなブックマークに追加  


この記事を読んだ人はこんな記事も読んでいます記事リコメンデーションについて

カバー画像:iPad を外部ディスプレイにする

関連記事/トラックバック

関連記事/トラックバックはまだありません

この記事にトラックバックを送るには?

コメントを投稿する

 
 (必須, 匿名可, 公開, トリップが使えます)
 (必須, 匿名可, 非公開, Gravatar に対応しています)
 (必須)
スパム コメント防止のため「投稿確認」欄に ランダムな数字 CAPTCHAについて を入力してから送信してください。お手数ですがご協力のほど宜しくお願いいたします。