序章

Mod_deflateは、クライアントに送信する前にWebサーバーからの出力を圧縮できるようにするApacheモジュールです。 サイトコンテンツのサイズが圧縮されると、そのサイズは小さくなり、クライアントはそれをより速くダウンロードできるようになります。 これは、帯域幅が狭いクライアントにとって価値があるだけでなく、サイトのパフォーマンスとそのページランクを評価するときに検索エンジンによって考慮されます。

コンテンツの圧縮に加えて、mod_deflateは非圧縮の目的にも使用できます。 この手法は、Apacheをリバースプロキシとして使用し、プロキシを通過するコンテンツをさらに処理する場合に適用できます。 ただし、この手法の用途は非常に限られています。 圧縮にmod_deflateを使用することに焦点を当てていきます。

前提条件

このガイドはUbuntu14.04でテストされています。 CentOS 7については、このガイドを確認してください。 モジュールのインストールと構成はOSまたはOSのバージョンに依存しませんが、構成ファイルの場所はOSとそのバージョンによって異なる場合があります。

また、Apache2.4.0以降を実行していることも前提としています。 Apacheをインストールするには、 Linux、Apache、MySQL、PHP(LAMP)スタックをUbuntu 14.04にインストールする方法の記事のステップ1に従ってください。

このチュートリアルのすべてのコマンドは、root以外のユーザーとして実行する必要があります。 コマンドにrootアクセスが必要な場合は、その前に sudo. まだセットアップしていない場合は、次のチュートリアルに従ってください: Ubuntu14.04を使用したサーバーの初期セットアップ。

インストール

Mod_deflateは、Ubuntu14.04のデフォルトのApacheインストールに含まれていて有効になっています。 この実行を確認するには apachectl、Apache Server Control Interface、および出力を次のようにフィルタリングします grep キーワードの deflate このような:

  1. apachectl -t -D DUMP_MODULES |grep deflate

**注:** apachectl パスにがない場合は、コマンドへのフルパスを使用する必要がある場合があります。 /usr/sbin/apachectl.

君は見るべきだ deflate_module (shared) mod_deflateがインストールされ、有効になっている場合。 これが表示されない場合は、次のトラブルシューティング手順に従ってください。

  1. モジュールファイルがインストールされていることを確認します。 このファイルはコアの一部です apache2 前述の前提条件に従ってすでにインストールされているはずのパッケージ。 デフォルトでは、 /usr/lib/apache2/modules/mod_deflate.so. また、Webサーバーはこのファイルを開くことができるはずです。 この目的のために mod_deflate.so 644などの誰でも読み取り可能な権限が必要です。
  2. モジュールがロードされているかどうかを確認します。 モジュール構成ファイルを開きます /etc/apache2/mods-enabled/deflate.load 、へのシンボリックリンクです /etc/apache2/mods-available/deflate.load、この行が存在し、コメントアウトされていないことを確認します。
LoadModule deflate_module /usr/lib/apache2/modules/mod_deflate.so

注: Apacheの構成を変更する必要がある場合は、Apacheを再起動することを忘れないでください。 再起動コマンドは sudo apachectl restart.

構成

mod_deflateの使用を開始するには、圧縮するファイルの種類を指定する必要があります。 一方では、プレーンテキスト形式は圧縮によってサイズを大幅に縮小できるため、HTML、CSS、またはJavaScriptファイルに適用するのが理にかなっています。 一方、Flashや画像などの多くのマルチメディア形式にはすでに圧縮が含まれており、追加の圧縮は無駄になります。

まず、ファイルのデフォルト構成を使用できます /etc/apache2/mods-enabled/deflate.conf、へのシンボリックリンク /etc/apache2/mods-available/deflate.conf、これは:

/etc/apache2/mods-enabled/deflate.conf
<IfModule mod_deflate.c>
        <IfModule mod_filter.c>
                # these are known to be safe with MSIE 6
                AddOutputFilterByType DEFLATE text/html text/plain text/xml

                # everything else may cause problems with MSIE 6
                AddOutputFilterByType DEFLATE text/css
                AddOutputFilterByType DEFLATE application/x-javascript application/javascript application/ecmascript
                AddOutputFilterByType DEFLATE application/rss+xml
                AddOutputFilterByType DEFLATE application/xml
        </IfModule>
</IfModule>

上記のコードは、ファイルが拡張子と一致する場合、次のような一般的なテキストファイル拡張子を意味します。 .html, .txt, .xml, .css, .js や。。など。 mod_deflateのdeflateアクションによって圧縮されます。 拡張子がmimeタイプによってどのようにマッピングされているかわからない場合は、ファイルを確認してください /etc/mime.types. サイトに固有の拡張機能をさらに追加することをお勧めします。

<$> ノート: Ubuntuでは、Apache構成は複数のファイルに直感的に整理されています。 また、構成ファイルは通常有効になっていません。 たとえば、モジュール構成ファイルはディレクトリにあります /etc/apache2/mods-available/、例えば /etc/apache2/mods-available/deflate.conf. モジュール構成ファイルは、そのシンボリックリンクがディレクトリに作成された場合にのみ有効になります /etc/apache2/mods-enabled/ そのような /etc/apache2/mods-enabled/deflate.conf. <$>

さらに、mod_deflateには、独自の重要な構成オプションがいくつかあります。

  • DeflateCompressionLevel —適用される圧縮レベル。 デフォルトでは、このレベルは9で、最高レベルの圧縮です。 1は最小レベルの圧縮です。 圧縮率を高くすると、サーバーのCPU使用率が高くなる代わりに、出力が最小になります。
  • DeflateMemLevel —圧縮ライブラリが使用できるメモリzlibの量。 デフォルト値は9で、これも最高値です。 許可されたメモリを正確に計算するには、 DeflateMemLevel 16Kによる値。
  • DeflateWindowSize —圧縮ウィンドウのサイズ。 デフォルトでは、15の可能な最高値です。 数値が大きいほど圧縮レベルが高くなりますが、サーバーリソースが増えます。

ほとんどの場合、上記の値はデフォルトのままにしておくことができます。 ただし、mod_deflateを使用した後にサーバーのパフォーマンスが大幅に低下したと思われる場合は、構成ファイルでより低い値を構成できます。 /etc/apache2/mods-enabled/deflate.conf このような:

DeflateCompressionLevel 1

上記の場合、圧縮レベルが下がり、ファイルが大きくなります。 ただし、mod_deflateはこの方法で使用するCPUが少なくなります。 このような変更を適用する場合は、必ずApacheを再起動してください。

テスト

mod_deflateをテストするにはさまざまな方法がありますが、最も簡単な方法は、非対話型ネットワークダウンローダーであるwgetを使用することです。 Ubuntu 14.04ドロップレットにまだインストールされていない場合は、コマンドを使用してインストールできます sudo apt-get install wget.

テストには、少なくとも数百KBのテキストファイルが必要です。このファイルは、圧縮すると小さくなります。 このようなファイルが手元にない場合は、人気のあるJavaScriptライブラリであるJQueryをダウンロードしてサイトにアップロードできます。 ファイルを配置する場所がわからない場合は、Apacheのデフォルトのドキュメントルートにアップロードするだけです。 /var/www/html/ Ubuntu14.04で。 したがって、ファイルはデフォルトサイトのルートディレクトリで利用できるようになります。

<$> ノート: mod_deflateが出力を圧縮するには、クライアント(通常はブラウザー)が圧縮をサポートしている必要があります。 クライアントが圧縮をサポートしていない場合、ファイルはそのまま送信されます。 <$>

サンプルテストファイルがサイトにアップロードされたら、次のコマンドでダウンロードします。 wget. このテストは、ローカルマシンまたはドロップレットから実行できます。 このような:

  1. wget --header="Accept-Encoding: gzip" http://<your_server_ip>/jquery-1.11.3.js

上記の例では、 jquery-1.11.3.js Apacheサーバーからのファイル。 圧縮を利用するために、余分なものを渡します wget ヘッダー引数 Accept-Encoding: gzip.

上記の方法でダウンロードした場合、ファイル jquery-1.11.3.js 83KBである必要があります。 実際のところ、これは元のJavaScriptファイルとまったく同じではなく、クライアントによって追加で抽出される必要があるため、クライアント側でもオーバーヘッドが発生します。 ただし、ネットワークを介して転送されるサイズは、元のファイル(278K)の3分の1よりも小さい83KBにすぎません。

ダウンロードしたファイルのサイズをLinuxコマンドで確認し、ディレクトリの内容を一覧表示することで、上記の計算を確認できます。 ls このような:

  1. ls -lah jquery-1.11.3.js
  2. -rw-r--r-- 1 user user 83K Apr 28 12:20 jquery-1.11.3.js

次に、結果をサイトの元のファイルと再度比較できます。 ls 指図:

  1. ls -lah /var/www/html/jquery-1.11.3.js
  2. -rw-r--r-- 1 apache apache 278K Apr 28 12:20 /var/www/html/jquery-1.11.3.js

結論

この記事とJQueryライブラリの実際の例からわかるように、Mod_deflateは、サイトに必要な帯域幅を大幅に減らすのに役立ちます。 サイトの最適化をさらに続行するには、 Apacheコンテンツキャッシュについてお読みください。これは、mod_deflateを有効にした後の次の論理的な手順です。