apache Webサーバでは、apacheモジュールのmod_deflateを
利用して、gzip圧縮に対応しているクライアントに対して、コンテンツを
圧縮して転送することが可能です。
gzip でコンテンツを圧縮することにより、ネットワークの負荷を
軽減させることができ、レスポンススピードの向上が期待できます。
しかしながら、mod_deflateが利用できない場合もあります。phpの拡張 zlib を利用することでコンテンツの圧縮をすることが可能になります。
ob_startとgzhandlerを使うのと異なり、ソースコードの変更は必要ありません。
さくらなどのレンタルサーバを借りている場合に有効な手段になります。
PHPの設定ファイル php.iniに下記設定を追加します。
/usr/local/etc/php/your-php.ini
zlib.output_compression=1
圧縮
% time curl -H 'Accept-Encoding: gzip, deflate' http://example.com > /dev/null
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 271k 0 271k 0 0 120k 0 --:--:-- 0:00:02 --:--:-- 125k
Time spent in user mode (CPU seconds) : 0.010s
Time spent in kernel mode (CPU seconds) : 0.000s
Total time : 0:02.25s
CPU utilisation (percentage) : 0.4%
Times the process was swapped : 0
Times of major page faults : 0
Times of minor page faults : 212
非圧縮
% time curl -H 'Accept-Encoding: gzip, deflate' http://example.com > /dev/null
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 730k 0 730k 0 0 91353 0 --:--:-- 0:00:08 --:--:-- 120k
Time spent in user mode (CPU seconds) : 0.006s
Time spent in kernel mode (CPU seconds) : 0.010s
Total time : 0:08.19s
CPU utilisation (percentage) : 0.1%
Times the process was swapped : 0
Times of major page faults : 0
Times of minor page faults : 212