« 撮影可能枚数 | Main | mod_expiresでクライアントのキャッシュを最大限に(?)使用する »

2010.10.26

Tracのテキストデータを圧縮転送(mod_deflate)

充分な転送速度が得られない環境において、何とかレスポンス速度を上げることができないか、ということで、mod_deflateを使用してみることに(サーバーのCPUリソースにある程度の余力がないと、逆にそっちがボトルネックになってしまいますが)。

画像とか動画とかを大量に使用している場合、deflateの効果はほとんどありませんが、Tracのチケット運用のように、テキストが多い場合は効果が見込めるはず(もちろん、zip等の添付ファイルのダウンロードには効果はありませんが)。

懸念点としては、mod_pythonと組み合わせてきちんと動くのか否か? どうも、mod_pythonでTracを運用している環境でもmod_deflateを使っている、という話を見かけないので・・・(単に、あまりにも普通に設定できてしまうので、敢えて書くまでもないだけなのかもしれませんが)。

まずは、mod_deflateが組み込まれていることを確認。

LoadModule deflate_module modules/mod_deflate.so

続いて、delfateの設定・・・なのですが、最初、httpd.confの中にそのまま書いて、deflateが反応してくれないという状況に。理由は、SSLで運用しているため、正しくはそちら側に設定する(VirtualHostでポート443を分けている)必要があっただけですが(^^;

気を取り直して、SSLの設定を行っているssl.confに記述。

基本設定はこんな感じ。この部分の設定は、VirtualHostの外側に記述(なので、この部分は別にhttpd.confなどに記述しても問題ないはず)。リクエストURLが gif/jpg/jpeg/png/zip/lzh/gz のいずれかで終わる場合、deflateの対象外となるようにしています。

BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE\s(5\.5|6\.0) no-gzip
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|zip|lzh|gz)$ no-gzip dont-vary

DeflateFilterNote Input instream
DeflateFilterNote Output outstream
DeflateFilterNote Ratio ratio

LogFormat '%h %u %t "%r" %{outstream}n/%{instream}n (%{ratio}n%%) %{User-agent}i' deflate

VirtualHostディレクティブ内でログ出力を実施。

CustomLog logs/ssl_deflate_log deflate

Tracは、/trac ~にマッピングしているため、Locationディレクティブでdeflateの対象に(VirtualHost内に記述)。

<Location /trac>
  SetOutputFilter DEFLATE
  Header append Vary User-Agent env=!dont-vary
</Location>

なお、この部分はTracの設定を行っているconfファイル側に記述しても問題ないはず(そっちでもLocationの設定は行っているので)。この辺は、好みの問題かと(コンテンツ(Trac)を基準に設定を記述するか、機能(deflate)を基準に設定を記述するか)。

ちなみに、テスト環境で試してみたところ、Ticket閲覧においては20~25%のサイズに圧縮されていました。もちろん、カスタムフィールドの内容など、環境に依存する内容ではありますが、元のサイズが35KB~40KB程度あるので(思いの外大きくてちょっとびっくり)、1/4~1/5程度に圧縮できるってのは結構効果ありそう。

ちなみに、同一のサーバーでは他にSubversionなども運用しておりますが、今回は適用外としております。ただ、検証の時間の都合で見送っているだけなので、Subversion側にも適用の効果があるかどうか、いずれ調べてみる予定。

参考:
【帯域対策】Apacheのモジュールmod_deflateで転送量を大幅削減!
WEB+DB PRESS vol.59

#WEB+DB PRESSでmod_deflateの話が掲載されていて、「そういえば、そんな機能もあったなぁ~」って思い出しました(^^;


|

« 撮影可能枚数 | Main | mod_expiresでクライアントのキャッシュを最大限に(?)使用する »

Subversion・Trac・etc.」カテゴリの記事

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack


Listed below are links to weblogs that reference Tracのテキストデータを圧縮転送(mod_deflate):

« 撮影可能枚数 | Main | mod_expiresでクライアントのキャッシュを最大限に(?)使用する »