squidでキャッシュ

今自宅鯖でsquidを動かしているが、せっかくだからキャッシュさせることにした。
以下の設定を追加。

使用リソースの制御
続いてSquidが使用するリソースについての設定です.
ディスク容量とメモリ容量についての設定になるわけですが,これらもまたしっかりと設定しておかなくてはなりません.

前者についてはSquidを通った情報をキャッシュしておくために使われるわけですので,これが少なすぎるとキャッシュが有効に活用されません.
そうかといってディスク容量をさけばさくほどキャッシュのヒット率が上がるかというと,一般にはそうでもないようです.
一方,後者はメモリ上にキャッシュを置くための領域をどれくらとるかという設定になります.メモリ上のキャッシュにヒットすればそれだけ速くレスポンスを返すことができますからサイズが大きい方が良いと言えるでしょう.
しかし,メモリはディスクよりもサイズ的に小さい上に,他のプロセスとのかねあいもありますのでやたらと大きくすることもできません.

ディスク容量についての設定
ディスク容量の調整はキャッシュ用に使う場所の指定とともに行います.

cache_dir ufs /usr/local/squid/cache 100 16 256
この設定で/usr/local/squid/cache以下がキャッシュ用の領域として使われます.
もし必要ならパスを変更しておきましょう.
パス名の後に続く100というのが領域のサイズ指定で,これは100Mバイトまでにするということを意味します.
ですからたとえば500Mバイトまでにしたいのであればこの部分を500に書き換えればよいわけです.

キャッシュ領域の使い方に関係する設定項目をもう一つ挙げておきます.

maximum_object_size 4096 KB
この設定によって一つ一つのデータのサイズが 4096Kバイトまでのものだけがキャッシュに保存されるようになります.これより大きいものについてはSquidを通ってクライアントには渡りますが,キャッシュには入りません.

メモリ容量についての設定
メモリ容量を制限するのは以下の設定によって行います.

cache_mem 8 MB
ただしこの設定はSquidのプロセスのサイズを制御するものではありませんのでその点に注意が必要です.コメントの中にも記述がありますが,プロセス自体のサイズはここで設定した値の2〜3倍になり得るようです.

動作権限
基本的な設定のしめくくりとして Squidが動作する際の権限を確認しておきましょう.

cache_effective_user nobody
cache_effective_group nogroup
Squidはここで設定されているユーザ・グループの権限において動作します.
たとえばディスク上のキャッシュに対する読み書きやログファイルに対する操作などに関係してきます.

通常は専用のユーザとグループを作って,その権限で動作させるようにした方がよいでしょう.
たとえばユーザsquid,グループsquidを作ってその権限で動作させるのであればこのようにしておきます.

cache_effective_user squid
cache_effective_group squid