HTTP/0.9 200 OK

estis2010/09/04 (土) 00:25 に投稿

PHPが、'--with-zlib' でコンパイルされていて、
デフォルトの設定が、

output_handler no value
zlib.output_compression Off
zlib.output_compression_level -1
zlib.output_handler no value

となっている時、
.htaccessに、

php_value output_handler mb_output_handler
php_flag zlib.output_compression On

と記述して、.htaccessと同一ディレクトリ以下のファイルにアクセスすると、
サーバーからの応答ヘッダーが、
HTTP/0.9 200 OK
となり、実際には0バイトのデータが送信されてくる。

Google Chrome だと、

このウェブサイトはご利用いただけません。

http://***.***.***/ のウェブページは一時的に停止しているか、新しい http://***.***.***/ に移動した可能性があります。

エラーの詳細
元のエラー メッセージは次のとおりです。

エラー 324 (net::ERR_EMPTY_RESPONSE): 不明なエラーです。

とエラーを表示する。

ところが、.htaccess の記述の順番を逆に、つまり、

php_flag zlib.output_compression On
php_value output_handler mb_output_handler

とすると、問題なくウェブページは表示される。
この時は、HTTP/1.1 200 OK になっている。

zlib.output_compression On とするなら、
output_handler mb_output_handler ではなく、
zlib.output_handler mb_output_handler とした方がいいだろう。

サーバーから送信されるファイルサイズを調べてみると、

デフォルト
 53385バイト

php_flag zlib.output_compression On
php_value output_handler mb_output_handler

 9825バイト

php_flag zlib.output_compression On
php_value zlib.output_handler mb_output_handler

 9497バイト

php_flag zlib.output_compression On

 9834バイト

php_value output_handler mb_output_handler

 53162バイト

php_value zlib.output_handler mb_output_handler

 53387バイト

となった。


php_flag zlib.output_compression On
php_value zlib.output_handler mb_output_handler
php_value zlib.output_compression_level -1

 9496バイト

php_flag zlib.output_compression On
php_value zlib.output_handler mb_output_handler
php_value zlib.output_compression_level 0

 53198バイト

php_flag zlib.output_compression On
php_value zlib.output_handler mb_output_handler
php_value zlib.output_compression_level 1

 10905バイト

php_flag zlib.output_compression On
php_value zlib.output_handler mb_output_handler
php_value zlib.output_compression_level 2

 10565バイト

php_flag zlib.output_compression On
php_value zlib.output_handler mb_output_handler
php_value zlib.output_compression_level 3

 10339バイト

php_flag zlib.output_compression On
php_value zlib.output_handler mb_output_handler
php_value zlib.output_compression_level 4

 9907バイト

php_flag zlib.output_compression On
php_value zlib.output_handler mb_output_handler
php_value zlib.output_compression_level 5

 9657バイト

php_flag zlib.output_compression On
php_value zlib.output_handler mb_output_handler
php_value zlib.output_compression_level 6

 9495バイト

php_flag zlib.output_compression On
php_value zlib.output_handler mb_output_handler
php_value zlib.output_compression_level 7

 9360バイト

php_flag zlib.output_compression On
php_value zlib.output_handler mb_output_handler
php_value zlib.output_compression_level 8

 9325バイト

php_flag zlib.output_compression On
php_value zlib.output_handler mb_output_handler
php_value zlib.output_compression_level 9

 9326バイト

サイズはApacheのアクセスログから拾った。
リロードを繰り返しながら見ていると、1バイト前後は数字が変化するようだ。
今回のテストでは、zlib.output_compression_levelが、8と9は違いがないように見える。
-1、つまり指定せずサーバーにおまかせの時は、レベル6にしているようだ。

      圧縮比
デフォルト 100.00%
-1      17.79%
0      99.65%
1      20.43%
2      19.79%
3      19.37%
4      18.56%
5      18.09%
6      17.79%
7      17.53%
8      17.47%
9      17.47%

今回アクセス対象としたのは、phpinfo関数のみを記述したPHPスクリプト。
CentOS 5.5 Apache 2.2.3 PHP 5.1.6 での確認。