web-dev-qa-db-ja.com

Chrome開発者ツールの[キャッシュを無効にする]が "content-encoding:gzip"応答ヘッダーを変更するのはなぜですか?

「Disable Cache」はgzipと圧縮と何の関係がありますか? 「キャッシュを無効にする」がチェックされている場合、応答ヘッダーはcontent-encoding:gzipを表示しますが、「キャッシュを無効にする」がチェックされていない場合(2番目のスクリーンショット) 応答ヘッダーはcontent-encoding:gzip?どちらが正しいか、gzipを表示するために両方を作成するにはどうすればよいですか?ありがとうございました。

enter image description hereenter image description here

3
Mike Tink

「Disable Cache」はgzipと圧縮と何の関係がありますか?

直接何もない。 [キャッシュを無効にする]がオンになっている(ローカルブラウザキャッシュが無効になっている)場合を除き、サーバーは新しい応答(および本文)を送信する必要があります。リクエストを行う前にブラウザのキャッシュをクリアしただけであれば、同じ応答が返されます([キャッシュを無効にする]をオフにします)。

逆に、ローカルキャッシュが有効になっている場合、サーバーは完全な応答を送信しない場合があります(これはここで行われていることです)。状況によっては、ブラウザはリクエストをまったく送信しない場合があります(キャッシュメカニズムによって異なります)。

[キャッシュを無効にする]をオンにすると、応答ヘッダーにcontent-encoding:gzipが表示されます

サーバーは完全な応答本文を含む完全/新鮮な応答を送信することを強制されるため。 応答本体がgzipされています。

「キャッシュを無効にする」がチェックされていない場合(2番目のスクリーンショット)、応答ヘッダーにcontent-encoding:gzip?

このインスタンスでは、ローカルにキャッシュされたコピーが新しいと見なされるため、サーバーはStatus: 304 "Not Modified"で応答しています。 304の場合、サーバーは応答本文を送信せず(Content-Lengthヘッダーはありません)、結果としてgzipにコンテンツがありません。応答は最終的にブラウザのキャッシュから取得されます。

どちらが正しいか、gzipを表示するために両方を作成するにはどうすればよいですか?

両方とも正しいです。 1つは完全なサーバー応答と本文であり、もう1つはローカルにキャッシュされたバージョンを代わりに使用する必要があることを示す短い(HEADのみ)304応答です。

2
DocRoot