自宅サーバは回線が細いため,コンテンツを圧縮して配信してみることにした。Apache の mod_deflate を使う。
このブログサーバは,自宅サーバで (nlog(n): サーバを ThinkPad T42 に交換),少々トラブルがあったりしたが (nlog(n): ThinkPad T42 の Fan Error),元気に動いている。契約回線は ADSL 12M で,実質速度は下り 10 Mbit,上り 1 Mbit である。したがって,このサーバの記事を読む場合の回線速度は 1 Mbit である。それほどアクセスの多いサイトではないが,回線は細いと言える。
サーバの処理能力は高いとは言えないが,自宅内でサーバにアクセスした場合と,自宅外からアクセスした場合では,自宅内の方が圧倒的に早いことから,CPU には余力があると考えられる。
そこで,今回は Apache の mod_deflate を使ってコンテンツの圧縮をすることで,CPU の負荷は高まるが,回線を有効利用させることを考える。
動作環境は,Vine Linux 4.2 kernel 2.6.16, Apache 2.2.3 である。
設定に関しては Apacheで圧縮してコンテンツ配信しよう - takami_hirokiの日記 の情報が役に立った。
Vine Linux 4.2 では,Apache の追加モジュールの設定は /etc/apache2/conf.d/ ディレクトリにある *.conf ファイルに書くことになっているので,httpd.conf を直接編集しない方針でいくことにする。
/etc/apache2/conf.d/mod_deflate.conf に次の内容を書いて保存する。
この設定は,Apache のマニュアル (mod_deflate) の「ほぼ丸パクリ」で若干の変更を加えている。メインの変更点は,圧縮しないファイルの拡張子を追加したことである。追加したと言っても,これまた他人のコード (Apache Mod_Deflate and Flash SWF Files Don't Like Each Other | Phil Chen) の「ほぼ丸パクリ」で若干の変更を加えている。拡張子 bmp, lzh を追加し,細かいところでは mpeg, mpg の指定の誤植を修正している。
使用している Apache のモジュールは,コンテンツ圧縮用の mod_deflate である。フィルタ登録のための mod_filter は,「FilterProvider」ディレクティブなどを使わないのであれば不要である。
モジュール不足のために Apache に起動に失敗しないように,安全のために IfModule で囲んでいる。動作しない場合は,IfModule を外して試すこと。動作確認が完了したら戻せばよい。Location はサーバ全体にこのルールを適用するために指定している (Location ディレクティブ - core - Apache HTTP サーバ)。
設定が完了したら,サーバを再起動しておく。
再起動しても動作していないことがあるので,以下で確認する。
動作確認には,Firefox のアドオン Live HTTP Headers が使える。アドオンをインストールしたら,「ツール」→「Live HTTP Headers」でウィンドウを開いておき,目的のサーバのページをリロードする。ウィンドウには,リロードされたページのヘッダが表示される。
テキスト,Javascript, CSS などの Content-Encoding が gzip になっていれば動作している。また,gif, jpeg などの画像ファイルやその他の圧縮しないファイルに「Content-Encoding: gzip」がついていないことを確認する。
圧縮されたコンテンツには,「Vary: Accept-Encoding,User-Agent」というヘッダがつく。途中にプロキシサーバがある場合,適切に処理されるようにプロキシサーバに伝えている (サイトの最適化 〜 Vary: Accept-Encoding ヘッダーを設定する - 海外ホスティング入門)。
IE6 では,HTML 以外のコンテンツに圧縮をかけた場合,キャッシュがクラッシュするという話があるので (HTTPコンテンツ圧縮とPlack - blog.nomadscafe.jp),もし追加するなら次の行ということになるだろうか。
その他ハマりやすい点については,mod_deflate設定で躓く之事 | @哀T が詳しい。
このコンテンツ圧縮の設定をしたところ,Web ブラウザでの表示が,見て分かるくらい速くなった。Firefox 3.6,IE 9 での動作確認は行っているが,IE の他のバージョンや,Chrome, Opera, Safari での確認は行っていない。
Posted by n at 2011-09-14 23:52 | Edit | Comments (0) | Trackback(0)
Master Archive Index
Total Entry Count: 1957