stale-if-error

stale-if-error

[1] HTTPCache-Control: 頭欄state-if-error 指令は、 誤りが発生した場合に腐敗していてもキャッシュから結果を返して良いことを表します。

仕様書

構文

[4] >>3

     stale-if-error = "stale-if-error" "=" delta-seconds

処理モデル

[5] stale-if-error 指令が含まれている場合、 キャッシュは、誤りに遭遇したときには他の新鮮度の条件を満たさずともキャッシュされている腐敗した応答を使って構いません>>3

[9] ここで、「誤り (error) 」には 500, 502, 503, 504 が返され得る任意の状況を指します。 >>3 これには起源鯖時間切れなども含まれます。

[8] 指定された秒数よりも更に腐敗している場合には、他の条件に合致しない限り、 その腐敗した応答を使うべきではありません>>3

要求で使われた場合

[6] 要求Cache-Control 頭欄で使われた場合、 その要求に対する応答に限り指定が適用されます。 >>3

応答で使われた場合

[7] 応答Cache-Control 頭欄で使われた場合、 その応答キャッシュが適用される任意の要求に対する応答に指定が適用されます。 >>3

関連

[10] stale-if-error が指定されていても腐敗している応答はやはり腐敗しており、 Age が非零であったり Warning が付いていたりするべきです>>3

[11] >>3

HTTP/1.1 200 OK
Cache-Control: max-age=600, stale-if-error=1200
Content-Type: text/plain

success

... という応答であれば、10分間は新鮮であり、 その後更に20分間は誤りが発生した場合には返しても良いことを表しています。

15分後に再検証しようとして

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

... を返すことになります。