refresh_pattern の役割:
は、ページがキャッシュに入った後にキャッシュ内に留まる時間を決定するために使用されます。 fresh_pattern ルールは、明示的な有効期限が設定されていない応答にのみ適用されます。オリジンサーバーは、Expires ヘッダーまたは Cache-Control:max-age ディレクティブを使用して有効期限を指定できます。
構文:refresh_pattern [-i] regexp minpercent max [options]
min パラメータは分数です。これは、古い応答の最小制限時間です。応答がこの最小制限を超えてキャッシュに存在しない場合、応答は期限切れになりません。同様に、max パラメータはライブ応答の最大制限時間です。応答がこの最大制限を超えてキャッシュ内に存在する場合は、フラッシュする必要があります。
最小時間制限と最大制限時間の間の応答は、Squid の最後に変更された係数 LM-factor アルゴリズム LM-factor=(応答年齢)/(リソース年齢) に直面します。このような応答の場合、Squid は応答の経過時間と最終変更係数を計算し、それをパーセンテージ値として比較します。応答経過時間は、元のサーバーが応答を生成または最後に検証してからの経過時間にすぎません。ソースの経過時間は、Last-Modified ヘッダーと Date ヘッダーの間で異なります。 LM 係数は、反応年齢とソース年齢の比率です。
一般的に使用されるいくつかのパラメータの意味
override-expire
このオプションにより、Squid は Expires ヘッダーをチェックする前に最小値をチェックします。したがって、最小時間がゼロ以外の場合、応答が期限切れになる準備ができている場合でも、Squid は未確認のキャッシュ ヒットを返すことができます。
override-lastmod
Squid が LM-factor パーセンテージをチェックする前に最小値をチェックするようにオプションを変更します。
reload-into-ims
このオプションにより、Squid は確認リクエストに no-cache ディレクティブを使用してリクエストを送信できます。つまり、Squid はリクエストを転送する前に、リクエストに If-Modified-Since ヘッダーを追加します。これは、ターゲットに Last-Modified タイムスタンプがある場合にのみ機能することに注意してください。外部からの受信リクエストは、オリジンサーバーに到達できるように no-cache ディレクティブを保持します。
通常、reload-into-ims を使用できます。実際には、オブジェクトのタイムアウトを強制的に制御するため、http プロトコルの精神に違反しますが、帯域幅が狭い状況では、システムの応答時間を大幅に改善できます。
例:
refresh_pattern -i .css$ 1440 50% 129600 reload-into-ims
refresh_pattern -i .xml$ 1440 50% 129600 reload-into-ims
refresh_pattern -i .html$ 1440 90% 129600 reload-into-ims-
refresh_pattern -i .shtml$ 1440 90% 129600 reload-into-ims
refresh_pattern -i .hml$ 1440 90% 129600 reload-into-ims
refresh_pattern -i .jpg$ 1440 90% 129600 reload-into-ims
refresh_pattern -i .png$ 1440 90% 129600 reload-into-ims
refresh_pattern -i .gif$ 1440 90% 129600無視- reload
refresh_pattern -i .bmp$ 1440 90% 129600 reload-into-ims
refresh_pattern -i .js$ 1440 90% 129600 reload-into-ims
ignore-reload
このオプションにより、Squid はリクエスト内のキャッシュなしディレクティブを無視します。
それで。コンテンツがキャッシュに入った後、アクティブにパージされるまで削除されないようにしたい場合は、mp3、wma、wmv、gif などで一般的に使用される、ignore-reload オプションを追加できます。
例:
refresh_pattern -i .mp3$ 1440 50% 2880ignore-reload
refresh_pattern -i .wmv$ 1440 50% 2880ignore-reload
refresh_pattern -i .rm$ 1440 50% 2880無視-リロード
リフレッシュ_パターン -i .swf$ 1440 50% 2880 無視-リロード
リフレッシュ_パターン -i .mpeg$ 1440 50% 2880 無視-リロード
リフレッシュ_パターン -i .wma$ 1440 50% 2880 無視- reload
resource age = オブジェクトがキャッシュに入った時刻 - オブジェクトの last_modified
response age = 現在の時刻 - オブジェクトがキャッシュに入った時刻
LM-factor=(response age) /(リソース年齢)
例として、ここではパーセントのみが考慮され、最小値と最大値は考慮されません
例:refresh_pattern 20%
www.aaa.com/index.htm --- と仮定します。ソースサーバーの --lastmodified は 2007-04-10 02 :00:00
Squid の proxy.aaa.com/index.htm Index.htm がキャッシュに入った時刻 2007-04-10 03:00: 00
1) 現在時刻が 2007-04-10 03:00:00 の場合
リソース経過時間 =3 時-2 時 =60 分
応答経過時間 =0 分
index.htm は引き続きキャッシュに残ることができます (リソースの経過時間)*20%=12 分
つまり、index.htm はキャッシュに入った後、再確認されるまで 12 分間留まることができます。
2) 現在時刻が 2007-04-10 03:05:00 の場合
リソース経過時間 =3 時-2 時 =60 分
応答経過時間 =5 分
index.htm もキャッシュに保持できる時間 (リソースの経過時間)*20%=12 分-5=7
LM-factor=5/60=8.3%
2007-04-10 03:12:00 まで LM-factor=12/60=20% を超えると、最終的にキャッシュ内のページindex.htm が古くなります。
この時点で、index.htm に対するリクエストがない場合、index.htm に対するリクエストがあった場合、Squid はリクエストを受信した後、有効期限が切れているため、Squid から送信されます。変更されたリクエストがある場合、ソース サーバーがそれを受信した後、index.htm が更新されていない場合、Squid はキャッシュを更新する必要がなく、キャッシュされたコンテンツをクライアントに直接返します。同時に、リセットされたオブジェクトがキャッシュに入る時刻は、この時刻の後にページが再確認された場合、ソース サーバーの時刻 (2007-04-10 03:13:00 など) で確認されます。リセット後、リソースの寿命は長くなり、それに対応してキャッシュ内の生存時間も長くなります。
変更があった場合は、最新のindex.htmをSquidに返します。Squidは受信後にキャッシュを更新し、同時にLast_Modifiedに従って新しいindex.htmをクライアントに返します。新しいページとそのページの時間で、リソースの経過時間を再計算し、さらに生存時間を計算します。
実際、ページがキャッシュに入った後、再確認されるまでの生存時間、つまり (リソースの経過時間) * パーセンテージが決定されます。