2011-09-27 22 views
13

Cache-Control:no-storeCache-Control:no-cacheの実用的な違いが見つかりません。キャッシュ制御のno-cacheとno-storeの違いは何ですか?

私が知る限り、no-storeは、その応答をキャッシュするキャッシュデバイスがないことを意味します。一方、no-cacheは、キャッシュされた応答を最初にソースで検証することなくキャッシュされた応答を提供できるキャッシュデバイスがないことを意味します。しかし、その妥当性確認については何ですか?条件付きで入手できますか?

応答がno-cacheの場合、Last-ModifiedまたはETagが含まれていないとどうなりますか?

よろしくお願いいたします。

答えて

12

でも、その点検は何ですか?

Last-ModifiedまたはETagを正確にチェックしてください。クライアントは、サーバーに、これらのヘッダーを使用する新しいバージョンのデータがあるかどうかを尋ね、答えが「いいえ」の場合、キャッシュされたデータを提供します。


更新

RFC

no-cache 
    If the no-cache directive does not specify a field-name, then a cache MUST NOT use 
the response to satisfy a subsequent request without successful revalidation with the 
origin server. This allows an origin server to prevent caching even by caches that 
have been configured to return stale responses to client requests. 
+0

キャッシュレスポンスに「Last-Modified」も「ETag」もない場合は? – vtortola

+0

私はこの場合、レスポンスはまったくキャッシュされないと思います。 –

+0

それは私がRFCをどのように解釈するかです。 (追加スニペット) –

2

を-cacheは決してキャッシングがないことを意味するのではなく、キャッシングされたものを使用することがOKであれば、ユーザーエージェントは常にサーバーに問い合わせる必要があります。対照的に、店舗にはコピーを保存していないと言われています。つまり、何も質問することはありません。 「これを再利用できますか?」という回答がわかっている場合(1)質問のオーバーヘッドをスキップし、(2)再使用不可能な新しい結果のためのスペースを確保するために、再利用可能な記憶結果を捨てないでください。

パフォーマンスとは別に、のブラウザ履歴と動作の違いがあります。 HTTP 1.1仕様のセクション13.13には、「有効期限は履歴メカニズムには適用されません」と記載されています。 no-cacheヘッダーには有効期限が記述されているため、戻るボタンなどの履歴メカニズムには適用されません。したがって、ユーザは、サーバが接続されていなくても、キャッシュなしで前のページに戻ることができます。

一方、ストア不要のヘッダーは、データがセッション外に格納されるのを防ぎます。この場合、履歴メカニズムでは使用できません。ストアなしで、ユーザーが別のドメインに移動してセッションを終了してから戻ると、ブラウザーが表示する内容を知る唯一の方法は、サーバーから最初のページを再度取得することです。

ノーキャッシュ「これをキャッシュしない」ことを意味しませんが(それは無店舗ないだろう):

は、ここでは、このトピックに関するChromium issueが区別されます方法です。 no-cacheは、リソースが新鮮さのために再検証されない限り、通常のロードでこれを使用しないことを意味します。履歴ナビゲーションは通常の負荷ではありません。

関連する問題