Apache mod_deflateを設定してWebサーバーのパフォーマンスを向上させる方法 - TechRepublic

Apache mod_deflateを設定してWebサーバーのパフォーマンスを向上させる方法 - TechRepublic

Apacheウェブサーバーの処理能力を強化したい場合、mod_deflateを有効にするのが一つの方法です。このモジュールは、ウェブサーバーからの出力をクライアント(ブラウザ)に送信する前に圧縮します。コンテンツが圧縮されると、ブラウザはより速くダウンロードできるようになります。

圧縮によるメリットは、ページの表示速度の向上だけではありません。検索エンジンがサイトを評価する際、mod_deflate による帯域幅使用量の削減は、サイトのパフォーマンスとページランクの評価に考慮されます。まさに双方にとってメリットのあることです。

では、mod_deflate を有効にするにはどうすればいいのでしょうか?手順を順にご説明いたします。Ubuntu Server 17.04 でデモを行いますが、どの Linux ディストリビューションでも Apache サーバーで実行できます(ディストリビューションに応じて手順を変更するだけで済みます)。

モジュールの確認

mod_deflate はApacheと一緒にデフォルトでインストールされているはずです。確認するには、以下の手順を実行してください。

  1. ターミナルウィンドウを開く
  2. apachectl -t -D DUMP_MODULES | grep deflateコマンドを実行します。
  3. 図Aに示す出力を確認します。

図A

出力に deflate_module (shared) が表示されない場合は、モジュールが有効になっていることを確認する必要があります。有効になっていることを確認するには、/etc/ apache2/mods-enabled/deflate.load ファイルを開き、以下の行がコメントアウトされていないことを確認してください。

LoadModule deflate_module /usr/lib/apache2/modules/mod_deflate.so

その行が次のようになっている場合は、# 文字を削除する必要があります。

#LoadModule deflate_module /usr/lib/apache2/modules/mod_deflate.so

ファイルを編集する必要がある場合は、ファイルを保存して閉じ、コマンドsudo apachectl restart を発行して Apache を再起動します。

構成

mod_deflate を使用するには、Apache に圧縮するファイルの種類を指示する必要があります。圧縮モジュールを使用するには、以下のファイルの種類を設定することを強くお勧めします。

  • HTML
  • CSS
  • JavaScript

ほとんどのマルチメディア ファイルには、許容できる範囲で既に最大限の圧縮が施されているため、圧縮するのは冗長です。

/etc/apache2/mods-enabled/deflate.confファイルを開きます。デフォルト設定では、HTML、CSS、xml、rss、javascript を圧縮するように既に設定されていますが、以下の 3 つの重要なオプションが設定されていません。

  • 圧縮レベル – ファイルの圧縮レベルを1~9の間で指定します(1は最低の圧縮レベルです)
  • メモリレベル – zlibが圧縮に使用するメモリ量を指定します
  • ウィンドウサイズ – zlib圧縮ウィンドウのサイズを指定します

初期状態 (設定なし) では、mod_deflate はデフォルトで圧縮レベル 9、メモリ レベル 9、ウィンドウ サイズ 15 に設定されています。これらのオプションを最高値 (実際に最高値です) に設定すると、mod_deflate を最も効率的に使用できるように見えますが、圧縮するファイルによっては、プロセスによってシステム リソースが過剰に使用され、Web サーバーのパフォーマンスに悪影響を与える可能性があります。

これを最も効率的にするために、次のオプションを追加します。

DeflateCompressionLevel 7
​DeflateMemLevel 8
​DeflateWindowSize 10

上記の行は、2番目の </IFModule> セクションの最後の default ステートメントの直下に記述されます。Apache 2(Ubuntu 17.04)の場合、新しいステートメントは次の行の直下に記述されます。

AddOutputFilterByType DEFLATE application/xml

ファイルを保存して閉じ、次のコマンドで Apache を再起動します。

sudo apachectl restart

mod_deflateのテスト

新しく設定したモジュールが動作するかテストします。先ほど設定したサーバーで、以下の手順に従ってjQuery JavaScriptファイルをダウンロードしてください。

  1. ターミナルを開く
  2. cd /var/www/htmlコマンドでWebサーバーのドキュメントルートに移動します。
  3. sudo wget http://code.jquery.com/jquery-3.2.1.jsコマンドで .js ファイルをダウンロードします。

jquery-3.2.1.js ファイルのサイズは 268039 になります。

ネットワーク上の別の Linux マシンに移動し、ターミナル ウィンドウを開いて次のコマンドを発行します。

wget --header="Accept-Encoding: gzip" http://SERVER_IP/jquery-3.2.1.js

ここで、SERVER_IP はサーバーの IP アドレスです。

ダウンロード中は、ファイルサイズが元のファイルの半分以下と表示されます。私の場合(図B)、ダウンロードサイズは109.19KBでした。

図B

これで、圧縮が効率的に機能しています。

圧縮を簡単に

Apacheサーバーは、サーバーのパフォーマンスを損なうことなく、効率的なレベルの圧縮を実行できるようになりました。これは、Webサーバーのパフォーマンスを大幅に向上させるシンプルな圧縮方法です。設定オプションを調整して、Apacheサーバーに最適なパフォーマンスを実現する圧縮レベルを見つけてください。

Tagged: