それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

コンテンツをgzip 圧縮する gz hander とても楽だった

コンテンツを圧縮するには、1つ書くだけ

<?php
ob_start("ob_gzhander");

たったこれだけ。たったこれだけ。楽チンですね―

え?if 文は accept-encoding は?

ブラウザが非対応ならどうするの?、IFぶんで条件分岐は?それが、いらないんです。私も実験して驚きました。

実験してみました。

<?php

ob_start('ob_gzhander');
phpinfo();
header("Content-Length: ".ob_get_length());
ob_end_flush();

単純に、ob_start を追記しただけです。

gzip 非対応(Accept-Encoding 無し )の場合

非対応なら、生のHTMLを返す(バッファリングは失敗するので、処理されない)

curl  -v  https://localhost/info.php   > /dev/null
< HTTP/1.1 200 OK
< Date: Sat, 14 May 2016 10:46:45 GMT
< Server: Apache/2.2.22 (Debian) Phusion_Passenger/5.0.23 PHP/5.4.45-0+deb7u2 mod_ssl/2.2.22 OpenSSL/1.0.1e
< X-Powered-By: PHP/5.4.45-0+deb7u2
< Vary: Accept-Encoding
< Transfer-Encoding: chunked
< Content-Type: text/html

gzip 対応(Accept-Encoding 有り)の場合

対応なら、HTMLのバッファリングが成功するので、圧縮されたコンテンツが飛んでくる

curl  -v  https://localhost/info.php   -H 'Accept-Encoding: gzip, deflate, sdch' > /dev/null 
< HTTP/1.1 200 OK
< Date: Sat, 14 May 2016 10:53:58 GMT
< Server: Apache/2.2.22 (Debian) Phusion_Passenger/5.0.23 PHP/5.4.45-0+deb7u2 mod_ssl/2.2.22 OpenSSL/1.0.1e
< X-Powered-By: PHP/5.4.45-0+deb7u2
< Vary: Accept-Encoding
< Content-Encoding: gzip
< Content-Length: 11219
< Content-Type: text/html
<

ちゃんと圧縮されて飛んできます。

調べたら安心。

チャント調べたら安心できますね。

追記

自動適用されるのは content-type : text/**だけでした。 image は自分でやる必要がありますね。