67

Cache-Control:no-storeとの実際的な違いはわかりませんCache-Control:no-cache

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

応答no-cacheにが含まれているが、含まれていない、またはない場合はどうなりますLast-ModifiedETag

よろしく。

4

3 に答える 3

113

理解を深めるには、以下のフローチャートを参照してください ここに画像の説明を入力してください

参照:(https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/http-caching?hl=en#cache-control

于 2015-06-30T06:05:50.197 に答える
29

しかし、そのチェックは何ですか?

正確にチェック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. 
于 2011-09-27T17:39:49.220 に答える
19

ご存知のように、キャッシュがないということは、キャッシュがまったくないという意味ではなく、ユーザーエージェントが常にサーバーにキャッシュしたものを使用してもよいかどうかを尋ねる必要があるということです。対照的に、no-storeはコピーを保持しないと言っています。つまり、何も質問する必要はありません。「これを再利用できますか?」の答えを知っているなら 常にいいえの場合、キャッシュの検証をスキップし、他のデータ用にキャッシュ内のスペースを節約することで、パフォーマンスが向上します。

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

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

このトピックに関するChromiumの問題がどのように区別されるかを次に示します。

no-cacheは、「これをキャッシュしない」という意味ではありません(つまり、no-storeになります)。キャッシュなしとは、リソースの鮮度が再検証されない限り、これを通常のロードに使用しないことを意味します。履歴ナビゲーションは通常のロードではありません。

于 2017-07-08T00:18:49.367 に答える