[解決済み] Cache-Control: max-age=0とno-cacheの違いは何ですか?
質問
ヘッダー
Cache-Control: max-age=0
は、コンテンツが直ちに古いとみなされる (そして再送信されなければならない) ことを意味し、実質的には
Cache-Control: no-cache
.
解決方法は?
私も同じ疑問を持っていて、検索でいくつかの情報を見つけました(あなたの質問も結果の1つとして出てきました)。 以下は、私が判断したことです。
には2つの側面があります。
Cache-Control
ヘッダがあります。 一方は、ウェブサーバ(別名:オリジンサーバ")が送信できる場所です。 もう一方は、ブラウザ(別名:ユーザーエージェント)が送信するものです。
オリジンサーバーから送信する場合
私が思うに
max-age=0
は、キャッシュ (およびユーザエージェント) に最初から古いレスポンスであることを伝えるだけで、その結果
すべき
を使用して)レスポンスを再検証します。
If-Not-Modified
ヘッダ) を使用してからキャッシュされたコピーを使用するのに対し。
no-cache
は、彼らに
必須
キャッシュされたコピーを使用する前に再バリデートする。 より
14.9.1 キャッシュ可能なもの
:
ノーキャッシュ
...キャッシュは、その応答を使用してはならない。 後続のリクエストに対応するため での再確認が成功しない限り オリジンサーバ これにより オリジンサーバーは に設定されているキャッシュによって クライアントに対して古くなった応答を返す リクエストに対応します。
言い換えれば、キャッシュは時々古い応答を使用することを選択することができる(ただし、その場合、キャッシュに
Warning
ヘッダを含む)、しかし
no-cache
は、何があってもstale responseを使うことは許されないと言っています。 もしかしたら、あなたが欲しいのは
すべき
-revalidate の動作は、野球の統計がページ内で生成されたときに必要ですが、あなたは
必須
-eコマースで購入した際のレスポンスを生成した際に、-revalidateの動作を行います。
というコメントでは正しいのですが。
no-cache
は保存を妨げるものではないとされていますが、実はもう一つの違いとして
no-cache
. あるページに出会いました。
キャッシュ制御ディレクティブの概要
と書かれています(その正しさは保証できませんが)。
実際には、IEとFirefoxは キャッシュなし ディレクティブは、あたかも ブラウザは、ページをキャッシュすることさえしません。 私たちはこの挙動を観察し始めました。 1年ぐらい前に 私たちは この変更のきっかけは を広く(そして正しくなく)使用している。 ディレクティブを使用してキャッシュを防止することができます。
...
最近になって、"cache-control: no-cache"も挙動を開始しました。 ディレクティブのようなものです。
余談ですが、どうやら
Cache-Control: max-age=0, must-revalidate
と基本的に同じ意味であるべきです。
Cache-Control: no-cache
. ということは、もしかしたら、その方法で
MUST
-のバリデーション動作は
no-cache
の見かけ上の移行を回避しつつ
no-cache
と同じことをするために
no-store
(つまり、キャッシュは一切しない)?
ユーザーエージェントから送信された場合
私が思うに shahkalpeshの回答 は、ユーザーエージェント側に適用されます。 また 13.2.6 複数のレスポンスの曖昧さ回避 .
ユーザーエージェントがリクエストを送る際に
Cache-Control: max-age=0
(別名: End-to-end revalidation") の場合、途中の各キャッシュはそのキャッシュエントリを再確認します (例えば、"quot" のように
If-Not-Modified
ヘッダ)をオリジンサーバに送信します。 その後、304(Not Modified)の応答があれば、キャッシュされたエンティティを使用することができます。
一方、リクエストを送る際に
Cache-Control: no-cache
(別名. "end-to-end reload")は再バリデートを行わず、サーバーの
MUST NOT
は、応答時にキャッシュされたコピーを使用します。
関連
-
[解決済み】Android 8:クリアテキストのHTTPトラフィックが許可されない
-
[解決済み] 0.0.0.0:80」と「:80」でのリスニングの違いは何ですか?
-
[解決済み] 正しいJSONコンテンツタイプは何ですか?
-
[解決済み] URI、URL、URNの違いは何ですか?
-
[解決済み] POSTとPUT HTTP REQUESTの違いは何ですか?
-
[解決済み】HTTPのPOSTとPUTの違いは何ですか?
-
[解決済み】全てのブラウザで、Webページのキャッシュを制御するには?
-
[解決済み】no-cacheとmust-revalidateの違いについて
-
[解決済み] PragmaヘッダーとCache-Controlヘッダーの違い?
-
[解決済み] HTTPのPOSTメソッドをキャッシュすることは可能ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
HTTPプロトコルの古典的な面接の質問と回答
-
[解決済み] Preflightとredirectを使用したCORSリクエスト: 不許可になりました。回避策は?
-
[解決済み] ブラウザの「F5」や「Ctrl + F5」によるリフレッシュはどのようなリクエストを発生させるのでしょうか?
-
[解決済み】全てのブラウザで、Webページのキャッシュを制御するには?
-
[解決済み】REST APIでPATCHとPUTのどちらを使うべきですか?
-
[解決済み】http getリクエストにヘッダーを設定する方法は?
-
[解決済み】no-cacheとmust-revalidateの違いについて
-
[解決済み】Accept* HTTPヘッダのq=0.5とは何ですか?
-
[解決済み] サーバーサイドでCookieを削除する正しい方法
-
[解決済み] Cache-Control: privateとは何ですか?