2017-11-24 6 views
2

2つのヘッダCache-control: max-age=0Cache-control: max-age=-1の間のブラウザの動作の違いは何ですか?キャッシュ制御でmax-age = 0とmax-age = -1の違いは何ですか?

ブラウザがmax-age = 0を受け取った場合、キャッシュはすぐに再検証されます。 ブラウザがmax-age = 10を受け取ると、10秒後にキャッシュが再検証されます。 max-age = -1のブラウザの動作は何ですか? max-age = 0の場合と同じですか?はいの場合、なぜ両方が必要なのでしょうか?

答えて

2

max-agedelta-secondsに一致する引数を取ります:

The delta-seconds rule specifies a non-negative integer, representing 
time in seconds. 

    delta-seconds = 1*DIGIT 

max-age=-1したがって、有効なディレクティブではなく、仕様が解釈を定義していません。スペックは示唆:

Caches are 
encouraged to consider responses that have invalid freshness 
information to be stale. 
2

中間キャッシュが独自のキャッシュエントリを再検証するために、最大エージング= 0ディレクティブにより、強制され、最大エージング

https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.3からクライアントが要求に独自のバリデーターを提供している場合、提供されたバリデーターはキャッシュ項目に現在格納されているバリデーターと異なる場合があります。この場合、キャッシュはセマンティクスの透過性に影響を与えずに、どちらかのバリデーターを使用して独自の要求を行うことができます(MAY)。 ただし、バリデーターの選択はパフォーマンスに影響する可能性があります。最善の方法は、中間キャッシュが要求を行うときにそれ自身のバリデータを使用することです。サーバーが304(Not Modified)と応答すると、キャッシュは現在検証済みのコピーを200(OK)応答でクライアントに返すことができます。ただし、サーバーが新しいエンティティとキャッシュバリデータで応答する場合、中間キャッシュは、強力な比較機能を使用して、返されたバリデータとクライアントの要求で提供されたバリデータを比較できます。クライアントのバリデーターが元のサーバーのバリデーターと等しい場合、中間キャッシュは単に304(Not Modified)を返します。それ以外の場合は、200(OK)応答の新しいエンティティを返します。

最大秒数 デルタ秒

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Max-Ageからの結果をキャッシュすることができます。 Firefoxはこれを24時間(86400秒)、クロムを10分(600秒)で上限にします。 Chromiumではデフォルト値の5秒も指定されています。 -1の値はキャッシングを無効にし、すべての呼び出しに対してプリフライトのOPTIONSチェックが必要です。

関連する問題