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重に圧縮をかけてもデータが小さくなることはあまり望めず、圧縮処理の時間だけ無駄に時間がかかる可能性があるためです。
<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 が表示されます。
上の画像のとおり、無事に設定できていることが確認できました。