web-dev-qa-db-ja.com

「年齢:0」HTTPヘッダー

HTTPヘッダー「Age」は何のためのものですか?具体的には、値0(Age: "0")意味?

28
shdev

Ageヘッダーフィールド の使用目的については、 HTTP 1.1仕様 を参照してください。

Age response-headerフィールドは、応答(またはその再検証)がOriginサーバーで生成されてからの送信者の推定時間を伝えます。

この情報は、中間プロキシによって使用されます 保存された応答の推定値を伝達します

HTTP/1.1では、Originサーバーは、可能であれば、すべての応答でDateヘッダーを送信し、応答が生成された時刻を指定する必要があります(セクション14.18を参照)。 「date_value」という用語は、算術演算に適した形式で、Dateヘッダーの値を表すために使用されます。

HTTP/1.1は、Age response-headerを使用して、キャッシュから取得したときの応答メッセージの推定経過時間を伝えます。 Ageフィールドの値は、応答がOriginサーバーによって生成または再検証されてからの時間のキャッシュの見積もりです。

さらに、Ageヘッダーフィールドは、中間キャッシュでのみ使用することを目的としています。

応答にAgeヘッダーフィールドが存在するということは、応答が直接ではないことを意味します。

つまり、ヘッダーフィールドAge: 0が存在するということは、受信した応答が中間キャッシュによって送信され、わずか0秒前であることを意味します。したがって、クライアントに送信する前に、おそらくOriginサーバーからフェッチされただけです。

27
Gumbo

「Ageヘッダーは、OriginのWebサーバーから最後に要求されてから、要求されているリソースの経過時間の推定値を秒数で示します。」

「ネットワーク遅延により、計算される年齢が不適切に低くなる可能性があるため、年齢は、ホップ間の推定時間に基づいて、リターンパスの各ステップで再計算されます。通常、年齢は、他の中間プロキシによる計算に依存するのではなく、計算されます。プロキシの現在の日付とHTTP応答に含まれるDate一般ヘッダーとの差として。同期されていないクロックがこの計算を行って負の差が生じる場合、0の経過時間が使用されます。 "

Chris Shiflett、「HTTP開発者ハンドブック」、83ページ。

5
james.garriss

それはたまたま指定されています プロトコルで

Age response-headerフィールドは、応答(またはその再検証)がOriginサーバーで生成されてからの送信者の推定時間を伝えます。キャッシュされた応答は、その経過時間が鮮度の有効期間を超えない場合、「新鮮」です。年齢の値は、セクション13.2.3で指定されているように計算されます。

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

経過時間の値は負でない10進整数であり、時間を秒単位で表します。キャッシュが表すことができる最大の正の整数より大きい値を受け取った場合、またはその年齢計算のいずれかがオーバーフローした場合、キャッシュは値2147483648(2 ^ 31)のAgeヘッダーを送信する必要があります。キャッシュを含むHTTP/1.1サーバーは、自身のキャッシュから生成されるすべての応答にAgeヘッダーフィールドを含める必要があります。キャッシュは、少なくとも31ビットの範囲の算術型を使用する必要があります。

3
driis