ホームページ  >  記事  >  バックエンド開発  >  Squid_PHPチュートリアルのrefresh_patternに関する理解と提案

Squid_PHPチュートリアルのrefresh_patternに関する理解と提案

WBOY
WBOYオリジナル
2016-07-21 15:47:15856ブラウズ

refresh_pattern の役割:
は、ページがキャッシュに入った後、キャッシュ内に留まる時間を決定するために使用されます。 fresh_pattern ルールは、明示的な有効期限が設定されていない応答にのみ適用されます。オリジンサーバーは、Expires ヘッダーまたは Cache-Control:max-age ディレクティブを使用して有効期限を指定できます。
構文:refresh_pattern [-i] regexp minpercentmax[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% 1 29 600 リロード- 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ロードイン- ims
refresh_pattern -i .png$ 1440 90% 129600 reload-into-ims
refresh_pattern -i .gif$ 1440 90% 129600ignore-reload
refresh_pattern -i .bmp$ 1440 90% 129600
リフレッシュパターン- 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% 2880ignore-reload
refresh _パターン -i .swf$ 1440 50% 2880ignore-reload
refresh_pattern -i .mpeg$ 1440 50% 2880ignore-reload
refresh_pattern -i .wma$ 1440 50% 2880ignore-reload
resource age = オブジェクトがキャッシュに入った時間 -オブジェクトの last_modified
応答経過時間 = 現在時刻 - オブジェクトがキャッシュに入った時刻
LM-factor=(応答経過時間)/(リソース経過時間)
たとえば、ここではパーセントのみが考慮され、最小値と最大値は考慮されません
例:refresh_pattern 20%
サーバー上のソース www.aaa.com/index.htm -----lastmodified は 2007-04-10 02:00:00
proxy.aaa.com/index.htm であると仮定しますSquid Index.htm がキャッシュに入った時刻は 2007-04-10 03:00:00 です

1) 現在時刻が 2007-04-10 03:00:00 の場合
resource age=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は常にキャッシュ内にあります。index.htmに対するリクエストがあった場合、Squidはリクエストを受信した後、有効期限が切れているためクエリを送信します。ソースサーバーが変更されたリクエストを受信した後、index.htm が更新されていない場合、Squid はキャッシュを更新する必要がなく、キャッシュされたコンテンツをクライアントに直接返します。同時に、リセットされたオブジェクトがキャッシュに入る時刻は、この直後にページが再確認された場合、2007-04-10 03:13:00 など、ソース サーバーで確認された時刻になります。リセット後、リソースの寿命は長くなり、それに対応してキャッシュ内の生存時間も長くなります。

変更があった場合は、最新のindex.htmをSquidに返します。Squidはそれを受け取った後にキャッシュを更新し、同時にLast_Modifiedに基づいて再計算を行います。新しいページとそのページがフェッチされた時刻から、生存時間をさらに計算します。

実際、ページがキャッシュに入った後、再確認されるまでの生存時間、つまり (リソースの経過時間) * パーセンテージが決定されます。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/320005.html技術記事 Refresh_pattern の役割: ページがキャッシュに入った後、キャッシュ内に留まる時間を決定するために使用されます。 fresh_pattern ルールは、明示的な有効期限が設定されていない応答にのみ適用されます。オリジナルサービス...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。