2011-06-23 15 views
0
HTTP/1.1 200 OK 
Date: Thu, 23 Jun 2011 07:59:40 GMT 
Server: Apache/2.2.16 (Amazon) 
Last-Modified: Thu, 23 Jun 2011 07:28:10 GMT 
ETag: "68a7f-278-4a65c06e95680" 
Accept-Ranges: bytes 
Content-Length: 632 
Keep-Alive: timeout=15, max=100 
Connection: Keep-Alive 
Content-Type: text/html; charset=UTF-8 

上記はHTTPヘッダーです。キャッシュ制御属性を持たないが、EtagおよびLast-Modified属性を持つ。ブラウザはどのようにこの状況に対処していますか?キャッシュが今では新鮮であるとみなされる期間は?Etag属性は存在しますが、HTTPヘッダーにキャッシュコントロールがありません。

答えて

1

RFC 2616 13.2.4項によると:

13.2.4有効期限の計算

応答が新鮮か古いであるかどうかを決定するために、我々は そのにその新鮮寿命を比較する必要があります 年齢。年齢は、セクション13.2.3で説明した
と計算されます。この セクションでは、
フレッシュネスライフタイムを計算する方法、および レスポンスが期限切れになったかどうかを判断する方法について説明します。
以下の説明では、値 は、算術演算に適した任意の形式
で表すことができます。

に「expires_value」という用語を使用すると、Expires
ヘッダーの値を示します。我々は(セクション 14.9.3を参照してください)「最大エージング」応答のCache-Controlヘッダ の ディレクティブによって運ば 秒数の 適切な値を示すために用語 「max_age_value」を使用します。

最大エージング は 計算は単純で、応答中に存在しているので、もしMAX-ageディレクティブは、有効期限を超える 優先されます:

freshness_lifetime = max_age_value 

そうでない場合は、有効期限が切れた場合 対応して存在しています、計算は次のとおりです。

freshness_lifetime = expires_value - date_value 

注これら の計算のどちらもクロック SKに対して脆弱であることewはすべての情報が であるため、オリジンサーバからのものです。

のいずれもが、のCache-Controlを無期限場合: MAXAGE、またはのCache-Control:S-
MAXAGEは(セクション14.9.3を参照してください) で応答を表示され、応答は他の制限が含まれ ていません キャッシングでは、キャッシュはヒューリスティックを使用して のフレッシュネス有効期間を計算してもよい(MAY)。 キャッシュには、 が既に追加されていない場合には、年齢が 24時間を超える応答に警告113 を添付する必要があります。応答が のLast-Modified時間を持っている場合

また、ヒューリスティック
有効期限の値はその時以来の間隔
のいくつかの割合よりも これ以上あってはなりません。 のこの設定の標準設定は10%です。私はまだ有効期限を計算するために使用されるヒューリスティックの明確ではないよ

response_is_fresh = (freshness_lifetime > current_age) 
+0

応答の有効期限が切れているかどうかを判断するための計算は非常に
簡単です。ヒューリスティックな部分についていくつか例を挙げて説明してください。 10%はどのような時間間隔で適用されますか? – pikini

+0

ヒューリスティックはアプリケーション定義で、必要なものを使用します。結果の値は、 'Last-Modified'ヘッダで指定された時間と現在の時間との間にある程度の時間(10%は単なる例に過ぎません)を超えてはいけません。 –

関連する問題