[1] HTTP の Cache-Control:
頭欄の
state-if-error
指令は、
誤りが発生した場合に腐敗していてもキャッシュから結果を返して良いことを表します。
stale-if-error = "stale-if-error" "=" delta-seconds
[5] stale-if-error
指令が含まれている場合、
キャッシュは、誤りに遭遇したときには他の新鮮度の条件を満たさずともキャッシュされている腐敗した応答を使って構いません。
>>3
[9] ここで、「誤り」には 500
,
502
, 503
, 504
が返され得る任意の状況を指します。 >>3 これには起源鯖の時間切れなども含まれます。
[8] 指定された秒数よりも更に腐敗している場合には、他の条件に合致しない限り、 その腐敗した応答を使うべきではありません。 >>3
[6] 要求の Cache-Control
頭欄で使われた場合、
その要求に対する応答に限り指定が適用されます。 >>3
[7] 応答の Cache-Control
頭欄で使われた場合、
その応答のキャッシュが適用される任意の要求に対する応答に指定が適用されます。
>>3
[10] stale-if-error
が指定されていても腐敗している応答はやはり腐敗しており、
Age
が非零であったり Warning
が付いていたりするべきです。 >>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
... を返すことになります。