Squidでのキャッシュ保存期間の設定(refresh_pattern)
キュッシュの保存期間をコントロールするための設定です。
頻繁に更新されるコンテンツは短く、画像ファイルなどはあまり変わらないので長くしたりします。
基本設定
refresh_pattern [-i] regex・・1 min・・2 percent・・3 max・・4 [options]・・5
- 正規表現を用いて、設定対象のファイル(パターン)を指定。デフォルトでは、大文字/小文字が区別されるので、無効にしたい場合は、-i オプションを使う。
- 単位は分。保存時間(キャッシュサーバ上でキャッシュされている時間)が設定値未満の場合は、(まだ新しいので)そのキャッシュオブジェクトを返却する。
- 単位は%。「(キャッシュサーバでの)保存時間÷(元のサーバでの)作成または変更からの経過時間」が、設定値より小さい場合、新しいとみなして、キャッシュオブジェクトを返却する。
- 単位は分。保存時間が設定値より長い場合は、(もう古いので)元のサーバより新しいコピーを取得して返却する。
- その他オプション設定
オプション設定
キャッシュ関連のHTTPヘッダー(Expires、Last-modified)を無視する設定と考えればよいと思う。
- キャッシュ保存時間の設定をシンプルにするため、以下の項目は全部付与するケースが多いです。バックエンドサーバに依存すると、いつキャッシュが切れるか分かりづらくて嫌なので。
- この設定をすると、バックエンドサーバより受信したHTTPレスポンスヘッダーが除去されて、ブラウザに届かないのでは?と心配になるかもしれませんが、別に除去されるわけではなく、あくまで、Squid自身のキャッシュ制御の際に考慮されなくなるだけです。
オプション項目 | 内容 | |
---|---|---|
override-expire | バックエンドサーバからの「Expires」ヘッダを無視する。 ※SquidはExpiresでキャッシュ有効性を確認 |
|
override-lastmod | バックエンドサーバからの「Last-modified」ヘッダを無視する。 ※SquidはLast-modifiedでキャッシュ有効性を確認 |
|
ignore-reload | ブラウザから「Cache-Control」または「Pragma」ヘッダーによる no-cache(バックエンドサーバからリロード)指定があっても無視する。 キャッシュがあればそれを返却する。 |
|
ignore-no-cache | バックエンドサーバからのno-cache(キャッシュ禁止) 指定があっても構わずキャッシュする。 |
|
ignore-no-store | 同上 | |
ignore-private | バックエンドサーバから、「Cache-Control」ヘッダーによる private(同じくキャッシュ禁止)指定があっても構わずキャッシュする。 |
[参考URL]
Squidの更新パターンでインターネットアクセスを高速化する (1/2) - ITmedia エンタープライズ
Kazuho@Cybozu Labs: キャッシュの上手な使い方
設定例
refresh_pattern (&nocache=1) 0 100% 0 オプション設定の記述は省略・・1*1 refresh_pattern (\?nocache=1) 0 100% 0 オプション設定の記述は省略・・2 refresh_pattern (/cgi/) 0 100% 0 オプション設定の記述は省略・・3 refresh_pattern (realtime.co.jp) 1 100% 1 オプション設定の記述は省略・・4 refresh_pattern . 5 100% 5 オプション設定の記述は省略・・5
*1:見づらくなるので省略しました。省略せずに書くと、こうなります。refresh_pattern (&nocache=1) 0 100% 0 override-expire override-lastmod ignore-reload ignore-no-cache ignore-no-store ignore-private