WebサイトをGZIPで配信する方法

WebサイトをGZIPで配信する方法をご紹介します。

GZIPで配信すると通常よりも圧縮されたデータでの通信になるため、効率的にデータを配信することが出来てサイトの表示速度向上を期待できます。

設定にはいくつかの方法がありますが、本記事では、Webサーバー(Apache Httpd)に設定を追加します。

モジュール確認

必要なモジュールが適用されているか確認します。

$ grep deflate_module /etc/httpd/conf.modules.d/*
./00-base.conf:LoadModule deflate_module modules/mod_deflate.so

適用されていることが確認できました。上記のように表示されない場合は必要なモジュールが適用されていません。

適用されていない場合には、他の LoadModule の真似をして上記のように記述して適用しましょう。

配信の設定

設定ファイルを編集して配信の設定をします。

今回は画像以外をGZIPで配信するよう設定します。画像は既に圧縮をかけているので、2重に圧縮をかけてもデータが小さくなることはあまり望めず、圧縮処理の時間だけ無駄に時間がかかる可能性があるためです。

/etc/httpd/conf/httpd.conf
<IfModule mod_deflate.c>
SetOutputFilter DEFLATE

AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/atom_xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
</IfModule>

設定の反映には再起動が必要なため、再起動します。

# service httpd restart

これで完了です。次にGZIPで配信されているか確認してみます。

GZIP配信の確認

サイトを開発者モード(F12)で表示して、Networkタブを選択します。

その状態でリロードすると読み込まれたデータが左側領域に表示され、選択すると詳細が右側領域に表示されます。

今回はstyle.cssを選択して詳細を確認してみました。GZIP配信が設定されていると、右側領域に Content-Encoding: gzip が表示されます。

上の画像のとおり、無事に設定できていることが確認できました。