web-dev-qa-db-ja.com

HTTPキャッシングヘッダー:再検証がどのように機能する必要がありますか?

trac を使用すると、次のヘッダーが付いた応答が返されます。

Cache-control: must-revalidate

さらに、「Expires」ヘッダーは送信されていません。ただし、ローカルプロキシはこれらの応答をキャッシュしているため、編集を行う場合は、ページを「ハードリフレッシュ」して更新する必要があります。プロキシの動作に問題がありますか? 可能性のあるその他のヘッダー:

Connection          Keep-Alive
Proxy-Connection    Keep-Alive
Keep-Alive          timeout=15, max=100
2
Bobby Jack

HTTPでは、明示的なExpiresヘッダーまたはCache-Controlヘッダーがない場合でも、応答をキャッシュできます。

具体的には、特定のHTTPステータスコード(200 OKを含む)を使用した応答について、独自のいわゆるヒューリスティックフレッシュネスを計算できます。通常、これはLast-Modifiedヘッダーの値に基づいています。たとえば、LMが応答が最初に保存された1日前である場合、キャッシュは2時間新鮮であると想定しても安全であると判断する可能性があります。

must-revalidateは、何かが古くなったら、Originサーバーでチェックする必要があることをキャッシュに通知する命令です。キャッシュが存在しない場合、キャッシュは(一般的に)異常な状況で古い応答を使用する可能性があります(たとえば、Originサーバーとの接続が失われた場合)。

したがって、このキャッシュは、ヒューリスティックな鮮度の計算に少し積極的であるように思われますが、誤動作しているようには見えません。キャッシュに応答をまったく保存させたくない場合は、Cache-Control: no-storeを試すか、(できれば)明示的なmax-ageを設定して、新鮮と見なされる期間を制御します。

キャッシングについて説明しているIETFHTTPbisワーキンググループの現在のドキュメントをご覧になることをお勧めします。

http://tools.ietf.org/html/draft-ietf-httpbis-p6-cache

これにより、RFC2616よりも少し明確になることを願っています。

また、 http://redbot.org/ はURLをチェックし、キャッシュが特定の応答ディレクティブを処理する方法を説明します。

7
Mark Nottingham