メインコンテンツまでスキップ

4 2.Freshness

新鮮なレスポンス (Fresh Response) とは、その経過時間 (Age) がまだ鮮度有効期間 (Freshness Lifetime) を超えていないものである。逆に、古いレスポンス (Stale Response) とは、それを超えたものである。

レスポンスの鮮度有効期間は、オリジンサーバーによって生成されてから有効期限までの時間の長さである。明示的な有効期限 (Explicit Expiration Time) は、オリジンサーバーが、それ以降はキャッシュがさらなる検証なしに保存されたレスポンスを使用できなくなることを意図する時刻であり、一方、ヒューリスティック有効期限 (Heuristic Expiration Time) は、明示的な有効期限が利用できない場合にキャッシュによって割り当てられる。

レスポンスの経過時間は、オリジンサーバーによって生成されてから、または正常に検証されてから経過した時間である。

レスポンスがキャッシュ内で「新鮮」である場合、オリジンサーバーに接触することなく後続のリクエストを満たすために使用でき、効率を向上させる。

鮮度を決定する主なメカニズムは、オリジンサーバーがExpiresヘッダーフィールド(セクション5.3)またはmax-ageレスポンスディレクティブ(セクション5.2.2.8)を使用して、将来の明示的な有効期限を提供することである。一般に、オリジンサーバーは、有効期限に達する前に表現が意味的に重要な方法で変更される可能性が低いという信念のもとに、レスポンスに将来の明示的な有効期限を割り当てる。

オリジンサーバーがすべてのリクエストをキャッシュに検証させたい場合、レスポンスがすでに古いことを示すために、過去の明示的な有効期限を割り当てることができる。準拠するキャッシュは通常、古いキャッシュされたレスポンスを後続のリクエストに再利用する前に検証する(セクション4.2.4参照)。

オリジンサーバーが常に明示的な有効期限を提供するわけではないため、キャッシュは特定の状況下でヒューリスティックを使用して有効期限を決定することも許可されている(セクション4.2.2参照)。

レスポンスが新鮮かどうかを判断する計算は次のとおりである:

response_is_fresh = (freshness_lifetime > current_age)

freshness_lifetime はセクション4.2.1で定義されている; current_age はセクション4.2.3で定義されている。

クライアントは、リクエスト内でmax-ageまたはmin-freshキャッシュディレクティブを送信して、対応するレスポンスの鮮度計算を制約または緩和できる(セクション5.2.1)。

鮮度を計算する際、日付解析における一般的な問題を回避するために:

  • すべての日付形式は大文字と小文字を区別するように指定されているが、キャッシュ受信者は日、週、タイムゾーン名を大文字と小文字を区別せずに照合すべきである (SHOULD)。
  • キャッシュ受信者の時間の内部実装がHTTP-dateの値よりも解像度が低い場合、受信者は解析されたExpires日付を、受信した値以下の最も近い時間として内部的に表現しなければならない (MUST)。
  • キャッシュ受信者は、ローカルタイムゾーンが経過時間または有効期限の計算または比較に影響を与えることを許可してはならない (MUST NOT)。
  • キャッシュ受信者は、GMTまたはUTC以外のタイムゾーン略語を持つ日付を、有効期限の計算に対して無効であると見なすべきである (SHOULD)。

鮮度はキャッシュ操作にのみ適用されることに注意すること; ユーザーエージェントに表示を更新させたり、リソースを再ロードさせたりするために使用することはできない。キャッシュと履歴メカニズムの違いの説明については、セクション6を参照すること。