« 撮影可能枚数 | 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

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/3959/49846127

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

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