age calculation rules

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るための欄ではありません。お間違えなきよう。