帯域幅の制限は、インターネットに接続している多くの人にとって今なお残る問題の1つだ。しかし、プロキシキャッシュサーバSquidをネットワークにインストールし、設定パラメータを用いてバイトヒット率を上げれば、利用可能な帯域幅を3~6割近くも拡大できる。
|
|
Squidは、きめ細かいチューニングによってさまざまなニーズに対応できる。現行の安定版には少なくとも249個のパラメータがあり、丁寧なコメントが付いた設定ファイル(通常は「/etc/squid.conf」)は4,600行以上もある。このボリュームには、経験豊かな管理者でも圧倒されるだろう。設定の変更はすべてこのファイル上で行う。
1週間では一杯にならない(理想をいえば1か月以上持つような)大きなキャッシュがほしいところだ。実際に必要なサイズは、ネットワークのトラフィック量によって変わってくる。キャッシュのサイズが大きいほど、要求されたオブジェクトがキャッシュに保存されている可能性が高くなる。
メモリ容量は、オペレーティングシステムおよびSquidの実行に必要な分に加え、キャッシュサイズの約1%をキャッシュのデータベース用に確保する必要がある。つまり、100GBのディスク領域をキャッシュにする場合は、そのデータベース用に約1GB、OSおよびSquid用に約100MBが必要になる。
Squidでキャッシュ可能なオブジェクトの最大サイズは、デフォルトで4MBである。ただし、最近のメディアリッチなインターネットの環境を考えるとこれでは少なすぎる。クライアント側で多数の動画やソフトウェアパッケージをダウンロードするなら、日常的にダウンロードされるファイルの最大サイズを考慮して値を(たとえば100MBに)増やすとよい。
キャッシュによる保存と提供が行われる対象は、更新パターン(refresh pattern)によって決まる。理想的には、コンテンツを提供するWebサーバの情報に従って、キャッシュ可能な対象と期間を決められるようにしたい。こうした情報は、Squidによって処理され理解されるHTTPヘッダに記されている。残念ながら、ほとんどのサーバによって与えられる情報はWebサーバのデフォルト設定であり、帯域幅の大幅な節約にはつながらない。
更新パターンの形式を以下に示す。
refresh_pattern [-i] regex min percent max [options]
ここで、minとmaxは時間を分単位で指定した値、percentはパーセント値である。optionsには次のものを指定できる。
- override-expire:WebサーバからのExpires(有効期限)ヘッダを無視する。
- override-lastmod:WebサーバからのLast-modified(最終更新日)ヘッダを無視する。
- reload-into-ims:クライアントからのreload(再読み込み)要求をIf-Modified-Since(更新日による条件付き取得)要求に変換する。
- ignore-reload:クライアントのno-cache(キャッシュを利用せず元のサーバからリロード)ディレクティブを無視する。よって、キャッシュから取得可能であればそれを利用して要求に応える。
- ignore-no-cache:Webサーバからのno-cache(オブジェクトをキャッシュ不可にする)ディレクティブを無視する。
- ignore-no-store:Webサーバからのno-store(やはりオブジェクトをキャッシュ不可にする)ディレクティブを無視する。
- ignore-private:Webサーバからのprivate(同じくオブジェクトをキャッシュ不可にする)ディレクティブを無視する。
- ignore-auth:権限の承認を要求するオブジェクトをキャッシュ不可するとの 制限を無視する。
- refresh-ims:クライアントからのreflesh(更新)要求をIf-Modified-Since要求に変換する。
これらのオプションのどれが利用できるかはSquidのバージョンによって異なるので、設定ファイルで確認すること。