4. stale-if-error Cache-Control 拡張
stale-if-error Cache-Control 拡張は、エラーが発生した場合、他の新鮮度情報に関係なく、キャッシュされた古いレスポンスを使用してリクエストを満たしてもよい(MAY)ことを示します。
stale-if-error = "stale-if-error" "=" delta-seconds
リクエスト Cache-Control 拡張として使用される場合、その適用範囲はそれが表示されるリクエストです。レスポンス Cache-Control 拡張として使用される場合、その範囲はそれが発生するキャッシュされたレスポンスに適用可能なすべてのリクエストです。
その値は古さの上限を示します。キャッシュされたレスポンスが示された量よりも古い場合、他の情報がない限り、キャッシュされたレスポンスをリクエストを満たすために使用すべきではありません(SHOULD NOT)。
このコンテキストでは、エラーとは、500、502、503、または 504 の HTTP レスポンスステータスコードが返される結果となるあらゆる状況です。
このディレクティブは新鮮度には影響しないことに注意してください。使用される古いキャッシュされたレスポンスは、送信時に依然として明らかに古くあるべきです(SHOULD)(つまり、HTTP の要件に従って、ゼロ以外の Age ヘッダーと警告ヘッダーを持つ)。
4.1. 例
以下を含むレスポンス:
HTTP/1.1 200 OK
Cache-Control: max-age=600, stale-if-error=1200
Content-Type: text/plain
success
これは、600 秒間は新鮮であり、さらに 1200 秒間古くなった後にエラーが発生した場合に使用できることを示します。
したがって、キャッシュが 900 秒後に検証を試み、以下に遭遇した場合:
HTTP/1.1 500 Internal Server Error
Content-Type: text/plain
failure
代わりに成功したレスポンスを返すことができます:
HTTP/1.1 200 OK
Cache-Control: max-age=600, stale-if-error=1200
Age: 900
Content-Type: text/plain
success
年齢が 1800 秒を超えた後(つまり、1200 秒間古くなった後)、キャッシュはエラーメッセージを書き込まなければなりません。
HTTP/1.1 500 Internal Server Error
Content-Type: text/plain
failure