前書き

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

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

前提条件

このガイドはCentOS 7でテスト済みです。 モジュールのインストールと構成はOSまたはOSバージョンに依存しませんが、構成ファイルの場所はOSとそのバージョンによって異なる場合があります。

また、Apache 2.4.0以降を実行していることを前提としています。 Apacheをインストールするには、https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-centos-7 [How To Linux、Apache、MySQL、PHP(LAMP)スタックをCentOSにインストールする]記事。

このチュートリアルのすべてのコマンドは、非rootユーザーとして実行する必要があります。 コマンドにルートアクセスが必要な場合は、先頭に「+ sudo +」が付きます。 まだセットアップしていない場合は、https://www.digitalocean.com/community/tutorials/initial-server-setup-with-centos-7 [CentOS 7での初期サーバーセットアップ]のチュートリアルに従ってください。

インストール

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

apachectl -t -D DUMP_MODULES |grep deflate

mod_deflateがインストールされ有効になっている場合は、「+ deflate_module(shared)+」が表示されます。 これが表示されない場合は、次のトラブルシューティング手順を行ってください。

  1. モジュールファイルがインストールされていることを確認します。 このファイルはコアの `+ httpd `パッケージの一部であり、前述の前提条件に従って既にインストールされているはずです。 デフォルトでは、 ` / etc / httpd / modules / mod_deflate.so `にあります。 また、Webサーバーはこのファイルを開くことができるはずです。 この目的のために、 ` mod_deflate.so +`には755などの誰でも読み取り可能なパーミッションが必要です。

  2. モジュールがロードされているかどうかを確認してください。 Apacheベースモジュール設定ファイル `+ / etc / httpd / conf.modules.d / 00-base.conf +`を開き、この行が存在し、コメントアウトされていないことを確認します。

LoadModule deflate_module modules/mod_deflate.so

設定

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

mod_deflateを設定するには、サンプルコードで新しい設定ファイル `+ / etc / httpd / conf.d / mod_deflate.conf +`を作成します。

/etc/httpd/conf.d/mod_deflate.conf

<filesMatch "\.(js|html|css)$">
   SetOutputFilter DEFLATE
</filesMatch>

上記のコードは、ファイルが拡張子「+ .js 」、「。html」または「+ .css」に一致する場合、または標準のApacheの「+ SetOutputFilter」ディレクティブによって圧縮(デフレート)されることを意味します。 サイトにある他の同様のテキストファイル拡張子(「+ .txt +」など)を追加できます。

さらに、mod_deflateには重要な設定オプションがいくつかあります。

  • + DeflateCompressionLevel +-適用される圧縮レベル。 デフォルトでは、このレベルは圧縮の最高レベルである9です。 1は最小の圧縮レベルです。 圧縮率を高くすると、サーバーのCPU使用率が高くなりますが、出力は最小になります。

  • + DeflateMemLevel +-圧縮ライブラリであるzlibが使用できるメモリの量。 デフォルト値は9で、これも最高値です。 許容メモリを正確に計算するには、 `+ DeflateMemLevel +`値に16Kを掛ける必要があります。

  • + DeflateWindowSize +-圧縮ウィンドウのサイズ。 デフォルトでは、可能な最大値の15です。 数値が大きいほど、圧縮レベルが高くなりますが、サーバーリソースが増えます。

ほとんどの場合、上記の値をデフォルトのままにしておくことができます。 ただし、mod_deflateを使用した後にサーバーのパフォーマンスが大幅に低下したと思われる場合は、設定ファイル `+ / etc / httpd / conf.d / mod_deflate.conf +`で次のように低い値を設定します。

DeflateCompressionLevel 1

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

テスト

mod_deflateをテストするにはさまざまな方法がありますが、最も簡単な方法は、非対話型ネットワークダウンローダーであるwgetを使用することです。 CentOS 7 Dropletにまだインストールしていない場合は、コマンド `+ sudo yum install -y wget +`でインストールできます。

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

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

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

上記の例では、Apacheサーバーから `+ jquery-1.11.3.js`ファイルをダウンロードしています。 圧縮を利用するには、追加の `+ wget `ヘッダー引数 ` Accept-Encoding:gzip +`を渡します。

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

上記の計算を確認するには、ダウンロードしたファイルのサイズをLinuxコマンドで確認して、ディレクトリの内容「+ ls +」を次のように一覧表示します。

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

次に、 `+ ls +`コマンドを使用して、サイト上の元のファイルと結果を再度比較できます。

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

結論

この記事とJQueryライブラリの実際の例からおわかりのように、Mod_deflateはサイトの帯域幅のニーズを大幅に削減するのに役立ちます。 サイトの最適化をさらに続けるには、https://www.digitalocean.com/community/tutorials/how-to-configure-apache-content-caching-on-centos-7 [Apache content cache]についてお読みください。 mod_deflateを有効にした後の次の論理ステップ。