Age

Age: ヘッダー (HTTP)

[8] Age: ヘッダーは応答の齢を表します。 齢 (よわい) (age) は、応答が起源鯖で生成されてからの時間です。

仕様書

意味

[12] Age: ヘッダーは、 応答が生成または成功裏に検証されてからの時間を送信者が見積もった値を示します >>19, >>11。

[21] Age: ヘッダーは起源鯖で生成された応答には付与されず、 キャッシュが返した応答には付与されます。 Age: ヘッダーの存在は、当該要求が起源鯖によって生成されたものではなく、 起源鯖が検証したものでもないことを表しています >>19。 しかし HTTP/1.0 キャッシュは Age: ヘッダーに対応していないことがありますから、 Age: がないからといって起源鯖が生成・検証したものとは限りません >>19。

齢

[10] 応答の齢 (よわい) (age) は、 起源鯖で生成されたか、検証が成功したかのいずれかからの経過時間です >>7。 齢 current_age は次の通り計算します。

[13] apparent_age は、手元の時計が十分よく起源鯖の時計と同期されている場合、

... と定義されます >>11。

[14] corrected_age_value は、応答の経路上のキャッシュがすべて HTTP/1.1 を実装する場合に

... と定義されます。なおこの値は応答の受信の時刻ではなく、 要求が開始された時刻からの相対値と解釈します。 >>11

[15] corrected_initial_age は、原則として

... と定義されます。ただし Via: ヘッダーに HTTP/1.0 ホップが含まれないなど Age: ヘッダーの値が信頼できると思われる場合は、
... としても構いません。 >>11

[16] current_age は

... と定義されます >>11。

[17] 齢の計算には時計が必要です。キャッシュは蓄積した応答を検証なしに再利用する場合の前提として時計を持たなければなりません。 時計を持たないキャッシュは、毎回検証しなければなりません。 (キャッシュ可能性参照。)

[26] Alternates: ヘッダーの齢は、 それが含まれていた応答の齢です >>27。

[25] 選択応答では、最善の異体の齢と Alternates: ヘッダーの齢の大きな方を Age: ヘッダーの値としなければなりません >>24。

構文

[20] Age: ヘッダーの値は、 デルタ秒で、時間を秒単位で表した非負整数です >>19。

  1. デルタ秒

文脈

[23] キャッシュは、蓄積された応答を検証なしに再利用した場合は、 Age: ヘッダーを生成 (既にあれば置換) しなければなりません。その値は current_age としなければなりません。 >>22

処理モデル

[18] 齢の値は、発見的満期時刻を使った場合の Warning: ヘッダーの生成に関わります。

新鮮寿命を参照。

歴史

[2] HTTP (RFC 2068 1.3, RFC 2616 1.3)
age
The age of a response is the time since it was sent by, or successfully validated with, the origin server.
齢 (よわい)
応答の齢は、起源サーバーから応答が送られてから、 又は起源サーバーにより成功裏に検証されてからの時間です。
[9] RFC 2068・2616 (HTTP/1.1) 14.6 Age

The Age response-header field conveys the sender's estimate of the amount of time since the response (or its revalidation) was generated at the origin server. A cached response is "fresh" if its age does not exceed its freshness lifetime. Age values are calculated as specified in section 13.2.3.

Age 応答頭欄は、応答が起源サーバーで生成されてから (またはその再検証から) の時間を送信者が見積もったものを伝達します。 キャッシュ応答は、その年齢が新鮮生存時間をこえなければ 「新鮮」です。年齢値は13.2.3 節に示したように計算します。

  • Age = "Age" ":" age-value
  • age-value = delta-seconds

Age values are non-negative decimal integers, representing time in seconds.

年齢値は非負十進整数で、秒数で時間を表現します。

If a cache receives a value larger than the largest positive integer it can represent, or if any of its age calculations overflows, it MUST transmit an Age header with a value of 2147483648 (2^31). HTTP/1.1 caches MUST send an Age header in every response. An HTTP/1.1 server that includes a cache MUST include an Age header field in every response generated from its own cache. Caches SHOULD use an arithmetic type of at least 31 bits of range.

キャッシュがその表現できる最大の正整数より大きい値を受け取った場合、 またはその年齢計算のいずれかが桁あふれした場合、値 2147483648 (231) の Age 頭を転送しなければなりません。 HTTP/1.1 キャッシュは各応答で Age 頭を送信しなければなりません。 キャッシュを含む HTTP/1.1 サーバーは、その自身のキャッシュから生成した各応答に Age 頭欄を含めなければなりません。 キャッシュは、最低31ビットの範囲の計算型を使用するべきです。

[28] freenginxでAgeヘッダーの扱いが改善されました · hnakamur's blog, , https://hnakamur.github.io/blog/2024/07/22/freenginx-proxy-cache-age/

メモ

[1] ageるための欄ではありません。お間違えなきよう。