Apacheのmod_deflateというモジュールを利用して、Webサイトレスポンスの転送データを圧縮して、転送量を減らす(チューニングする)対策方法について説明します。
この設定は高負荷時の転送帯域を減少させる効果があります。
また、AWS(Amazon Web Service)といった転送量に応じた従量課金の際には、コスト削減につながる対策にもなります。

mod_deflateとは?

クライアントにデータを送る前にサーバー側でコンテンツを圧縮してからレスポンスを送信するApacheのモジュールです。Apache側で該当モジュールを利用できる状態にし、設定を行なうことで利用できるようになります。

mod_deflateの組み込み

httpd.confで以下の行があるか、コメントアウトされていないか確認します。

[text]
LoadModule deflate_module modules/mod_deflate.so
[/text]

インストール方法次第では、そもそもmod_deflateが導入されていない場合もあるので
その際はApacheの再コンパイル等が必要となります。

httpd.conf内にDEFLATE設定

Apache公式マニュアルを参考に以下の設定を、httpd-deflate.confとして記述し、httpd.confより、Includeしてみます。

[xml]

# Insert filter
SetOutputFilter DEFLATE

# Netscape 4.x has some problems…
BrowserMatch ^Mozilla/4 gzip-only-text/html

# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip

# MSIE masquerades as Netscape, but it is fine
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

# Don’t compress images
SetEnvIfNoCase Request_URI\.(?:gif|jpe?g|png)$ no-gzip dont-vary

# Make sure proxies don’t deliver the wrong content
Header append Vary User-Agent env=!dont-vary
[/xml]

Apacheを再起動して確認してみます。
FirebugやGoogle PageSpeed Insightsなどで違いを確認してみましょう。

最後に

最近では、制作サイド側で、JavaScriptやCSSの結合&最小化や、画像スプライト化などによって転送数と転送量を削減する方法も一般的となりつつありますが、今回の記事のようにサーバー側でも簡単な設定だけでHTMLデータ等の圧縮転送が可能になります。
レンタルサーバーではなく、VPSやAWS、その他自社でサーバーを運営している際などでは是非mod_deflateを使った圧縮転送を試してみてください。

Webサイト高速化についてはまた記事にしていきたいと思います。