[PHP-users 17361]Re: Webページの圧縮転送について

Y.Watanabe yuw @ msj.biglobe.ne.jp
2003年 8月 17日 (日) 02:23:57 JST


わたなべです。

わかる範囲の話だけ・・・

Kouichi Matsumoto wrote on 2003/08/16 23:05
with Subject: [PHP-users 17360] Webページの圧縮転送について

> ほんの数ページだけ、かなり大きな(最大1.5Mバイトぐらい)HTMLになる為、
> mod_gzipををApacheに組み込む方法で圧縮するのではなく、
> 手軽に、phpで圧縮しクライアントへ転送したいのですが、
> http://jp.php.net/manual/ja/function.ob-gzhandler.php
> のように、ob_start("ob_gzhandler");の1行を
> ページの先頭に書くだけでそのページを
> gzipで圧縮して転送することができるのでしょうか?

うーん、わたしはやったことが無いので
わかりません(笑)。でも知りたい。

試してみて、apacheのログを見てみるってのはどうでしょうか?
ob_start("ob_gzhandler"); 
の一行をいれたスクリプトと、入れていないスクリプトの
両方の場合の、apacheのアクセスログの行を見比べてください。
転送量の値が小さくなっていれば
圧縮転送されているということになるでしょう。
#apacheのログ出力の設定がデフォルトなら転送量もログに出てるはず。

なお、試すときは、文字列をてきとうに10kbyte程度ほどばーっと羅列する
などしてあるていどサイズを大きくしておいたほうが、
圧縮される様子が(もしうまく圧縮できてれば)よくわかると思います。

できればやってみた結果を再度このMLに投稿してくださいね。
#こういう情報は共有しよう。 
#それこそこのMLの価値が上がるってものです ^^)


> 又、ob_start(array('ob_gzhandler',9));のように指定すると、
> 圧縮率を指定できるようですが、

おお、そうだったんだ。ちなみに、これって情報源は・・・(?)
なるほど、マニュアルの下のユーザーコメントに書いてある。
http://jp.php.net/manual/ja/function.ob-gzhandler.php#35000

あれ、でも、
ob_start(array('ob_gzhandler',9));
Does NOT work
「動かないぞ」って書いてありますよ!?バグかな?


> 又、PHPのマニュアルではWebページを圧縮するとありますが、HTMLだけでなく、
> 画像も圧縮されるのでしょうか?

たぶんされません。
それに、画像がもしもgifとかjpgとかの形式であれば、
既にデータ圧縮がかかっているので、転送段階でさらに
圧縮をかけたところでもはやほとんど圧縮できないので
意味がありません。
(意味がないどころか、既に圧縮されているものにさらに圧縮をかけると
かえってサイズが微増することさえあるはず)
例えばapacheにmod_gzipを入れているサイトでも、
画像ファイルにまでそれを有効にして
運用しているところは少ないいはずです。






PHP-users メーリングリストの案内