[8] キャッシュが有効であるとただちに確認できる期限を満期時刻といいます。 満期時刻までの時間を新鮮寿命といいます。新鮮寿命を過ぎていない応答を新鮮応答、 過ぎている応答を腐敗応答といいます。
[27] 明示的満期時刻は、 キャッシュがそれ以降は蓄積された応答を検証なしで利用できなくなると起源鯖が意図する時刻です >>2。
[29] 通常は起源鯖は表現がそれまでは意味的に大きく変わらないだろうという将来の明示的満期時刻を指定しますが、 要求があるたびにキャッシュに検証させたい時は過去の明示的満期時刻を指定することもできます >>2。
[28] 発見的満期時刻は、 明示的満期時刻が利用できない (鯖が指定していない) ときにキャッシュが割り当てるものです >>2。 明示的満期時刻がある場合、発見的満期時刻を使ってはなりません >>19。
[20] 発見的満期時刻を決定する方法は HTTP 仕様としては特に規定されていません >>19。また発見的方法を使うことも必須ではありません。使わない場合は、 明示されていない限り腐敗とみなすことになります。
[21] 応答が Last-Modified:
ヘッダーを持つ場合、
その時刻からの時間間隔の何割か分を超えないような発見的な値を使うことが推奨されています。典型的な割合は10%です。 >>19
[43] 明示的満期時刻の有無は、 POST
要求や
PATCH
要求 >>42 に対する応答のキャッシュ可能性に影響します。
[6] 応答の新鮮寿命は、 応答の起源鯖における生成と満期時刻までの間の時間です。
[15] 決定時に使う Cache-Control:
指令や
Expires:
が複数ある場合は、値は非妥当とみなします。
その場合腐敗とみなすことが推奨されています。 >>9
[37] Expires:
の値が非妥当な時も、
過去の時刻、すなわち腐敗とみなすことになっています (Expires:
参照)。
[38] Date:
が非妥当な時については明記されていませんが、
やはり非妥当で腐敗とみなすべきでしょう。
[39] Date:
が存在しない時は、キャッシュ時に付与することになっています
(Date:
参照)。
[41] 要求の Cache-Control: max-age
で指定された値は満期時刻の決定に寄与しないようですが、応答が検証なしで返されるかどうかには影響します。
max-age
参照。[32] 蓄積された応答は非妥当化されることがあります。
これは蓄積された応答を削除するか、または「非妥当」フラグを立てるかのいずれかを意味しています
>>33。蓄積された応答は、
HEAD
要求 >>34 や非安全要求メソッド >>33
に対する応答により非妥当化されます (詳細はそれぞれの項を参照)。
非妥当な場合は蓄積された応答を利用する前に検証が必要であり >>33、
「腐敗とする」 >>34 とも表現されています。
[184] DELETE
メソッドはキャッシュを非妥当化します。
DELETE
参照。[22] キャッシュは、新鮮寿命の計算に発見的満期時刻を使った場合は >>40, >>19、
その新鮮寿命が24時間よりも大きな場合 >>40、
齢 (current_age) が24時間よりも大きければ >>40, >>19、
警告符号 113
の Warning:
ヘッダーを
(既に無ければ >>19) 生成するべきです >>40, >>19。
[24] キャッシュは、明示的に禁止された場合
(例えば no-store
, no-cache
,
must-revalidate
, s-maxage
,
proxy-revalidate
が適用される場合) には、
腐敗応答を生成してはなりません >>23。
[25] キャッシュは、起源鯖と接続できないなど“切断されている”場合や
max-stale
などで明示的に認められている場合を除き、
腐敗応答を送ってはなりません >>23。
[26] キャッシュは、腐敗応答に警告符号 110
の Warning:
ヘッダーを生成するべきです >>23。
111
を生成するべき場合もあります。
[30] キャッシュは、キャッシュが“切断されている”場合の腐敗応答に警告符号 112
の Warning:
ヘッダーを生成するべきです >>23。
[31] キャッシュは、 Age:
ヘッダーを持たない応答を転送する場合には、
Warning:
ヘッダーを新たに生成するべきではありません。
キャッシュは転送中に腐敗した応答を検証する必要はありません。 >>23
[44] Chrome は、 リダイレクトに Cache-Control: public
と Last-Modified:
を指定するだけではその応答をキャッシュして再利用しません。
(キャッシュ可能性の条件は満たしているはずで、発見的満期時刻が使われるなら、
再利用されて良さそうですが。) それに更に max-age
を指定すると、再利用されるようになります。
Expires:
ヘッダーやCache-Control:
ヘッダーのmax-age
指示子で指定できます。