title_parttitle_parttitle_part
静岡県浜松市であれこれソフトを開発している A.K.I Software のブログです。日々の開発日記やサーバー・セキュリティ関連の話題なども掲載。
<< 2024/04 >>123456789101112131415161718192021222324252627282930
《《《 ネットワーク機器の購入は Amazon で! 》》》
Powered by BLOM サーバーの転送量を削減する その1
小さくも大きくも閉じたりもしません
09/04/30 08:39 / サーバー管理Tips

サーバーを運営している場合、小規模ならばそれ程気にしないのですが、ある程度の規模になると転送量を気にしなければなりません。
「うちは回線が太いから大丈夫」と思われる方もいらっしゃいますが「転送量=クライアントが受信するサイズ」なので、転送量が少なければ少ないほどブラウジングするクライアント(ユーザー)は快適に見られるというメリットがあります。

同じようなことがソフトウェアにも言えまして、今では CPU パワーやメモリが沢山使えますのでそれ程気にならないのですが、それを良しとして最新のCPUと大量のメモリがある環境で開発を行うと、それ以下の環境では重いソフトになってしまうことがあります。
「ネストループの最も内側は出来る限り軽くする。」的な考えもありまして、100ループの中の100ループの中で 1ms かかる処理があるとした場合、これが 0.2ms になると単純に計算して 10秒だった処理が 20秒になる訳です。
一つの処理は軽くてもそれが沢山重なればそれなりの速度になり、まさに塵も積もれば山となる。な訳です。

閑話休題

Webサーバーはブラウザとの通信に HTTP(又はHTTPS) を使って通信を行うのですが、この HTTP には 1.0 と 1.1 というバージョンがあります。

現在の主流となるブラウザの殆どは HTTP 1.1 をサポートしていまして、この HTTP 1.1 の中の機能に「HTTP圧縮」という機能があります。
これは、HTTP の中でサーバー側がコンテンツを圧縮して送信しブラウザは圧縮された状態で受信したコンテンツを解凍して展開します。(圧縮には ZIP でも使われている Inflate / Deflate が利用されています)

全てのコンテンツが圧縮される訳では無いのですが(HTMLで使われる、Jpeg/GIF/PNC などは元から圧縮されていますので、これを再度圧縮しても効果が見込めない。余計な CPU パワーを消費するなどのデメリットしかありません)テキストベースである、.html や .txt に関してはかなりの効果が見込めます。

もちろんリアルタイムに圧縮して送信をしていると圧縮コストによる CPU パワーの消費が増えてしまいますが、IIS は初めてリクエストされた時点で、テンポラリに圧縮したコンテンツを作成しておきその内容を送信します。2回目以降は
予め作成されている圧縮コンテンツを送信し、内容が変更された場合は自動的に圧縮コンテンツの更新が行われます。
デメリットとしては圧縮によるCPUコストの増大と圧縮したコンテンツを保存しておく為のHDD容量を使うことですが、CPUコストは新規又は更新後の1回のみですし、HDD容量はHDDの大容量化が進んでいる現在無視できるコストだと思います。

IIS の場合設定はとても簡単です。

Windows2000 + IIS5.0 の場合

photo


1)IIS マネージャーを起動して、コンピュータのプロパティを開きます。
2)次にマスタプロパティの「WWW サービス」を選択して編集を押します。

photo


3)「サービス」タブを開きますと「HTTP 圧縮」項目がありますので「静的ファイルを圧縮する」にチェックを入れます。
一時フォルダは、圧縮されたコンテンツが格納されるフォルダです。HDD 容量に余裕が無い場合は、一時フォルダの最大サイズを指定することにより、必要以上に圧縮コンテンツが貯まるのを防ぐことができます。

同じ項目に「アプリケーションファイルを圧縮する」とありますが、こちらは CGI などが出力する内容をリアルタイムに圧縮して送信する設定です。例えば CGI などで出力される内容が毎回違う場合、圧縮したファイルを作成するのは無意味ですので(毎回内容が変わる為)CGIの出力をIISで一旦受け内容を圧縮して送信するという処理になります。
効果はあるのですが、毎回圧縮処理が入る為、CPU パワーを結構消費します。確実にCPUパワーに余裕がある場合はいいのですがそうでは無い場合は、こちらはオフにしておくのが無難です。

Windows2003 + IIS6.0 の場合

photo


IIS6.0 の場合は、アプリケーションプールと Web サイトが分離されていますので、Web サイトのプロパティから設定を行います。設定の内容については IIS5.0 と完全に同じですので上記を参照して下さい。

Windows2008 + IIS7.0 の場合

photo


IIS7.0 の場合は、デフォルトで HTTP圧縮が有効になっていますので特に変更する必要はありません。
従来の IIS5.0 / IIS6.0 と違う点は、IIS5.0 / IIS6.0 がサーバー全体でしか設定出来なかった点と比べ、IIS7.0 はサイト別に設定が出来るようになっています。

サブドメインで HTML を表示するサイトと CGI を実行するサイトを分けた上で、HTML サイトでは静的ファイルの圧縮のみを行い、CGI を実行するサイトでは、アプリケーションファイルの圧縮を行うと同時に CPU 負荷調節などを行うとサーバー全体の負荷を調節しつつ転送量の削減などを行うことができます。(IIS7.0 いいなぁ!)

あっさりと設定できる割には効果がありますので、特に IIS5.0/IIS6.0 を利用している方は設定を確認してみては如何でしょうか?

[更新日付:2009/04/30 08:39:02]
トラックバックを見る(0)
Log Link [https://akisoftware.com/cgi-bin/blom.exe?akisoft+sl+1aa22cd76cf3a4407b23e45c980e4e18bab550d0]
TB Link [https://akisoftware.com/cgi-bin/blom.exe?akisoft+tb+1aa22cd76cf3a4407b23e45c980e4e18bab550d0]

記事へのコメント

コメントはありません

名前
コメントキー
 
コメントする時はキーを正確に入力して下さい
コメント
アドレスを含んだコメントはできません
© 2008-10 A.K.I Software all rights reserved.