213

Firefox用のGoogle「PageSpeed」プラグインを使用して自分のWebサイトにアクセスしています。

私のページのいくつかのコンポーネントはHTTPステータスとして示されています:

200200(キャッシュ)304

グーグルの「ページスピード」による。

私が混乱しているのは、200(キャッシュ)と304の違いです。

ページを複数回更新しましたが(キャッシュをクリアしていません)、favicon.icoといくつかの画像はstatus = 200(キャッシュ)であり、他のいくつかの画像はhttpstatus304であるように見えます。

なぜ違いがあるのか​​わかりません。

更新

Googleの「PageSpeed」を使用すると、 http ://example.com/favicon.icoとhttp://cdn.example.com/js/ga.jsの「200(キャッシュ)」を受け取ります。

しかし、http://cdn.example.com/js/combined.min.jsのhttpステータス「304」を受け取ります

同じディレクトリ/js/に2つのJavaScriptファイルがあり、1つはhttpステータス304を返し、もう1つは200(キャッシュ)ステータスコードを返す理由がわかりません。

4

5 に答える 5

229

コード「200 (キャッシュ)」の項目は、ブラウザーのキャッシュから直接実行されました。つまり、項目に対する元の要求は、ブラウザーがそれらをキャッシュできることを示すヘッダー (未来の日付ExpiresCache-Control: max-ageヘッダーなど)とともに返されたことを意味します。新しいリクエストをトリガーしたとき、それらのキャッシュされたオブジェクトはまだローカル キャッシュに保存されていて、まだ期限切れになっていませんでした。

一方、304 は、ブラウザがキャッシュした最後のバージョン以降にファイルが変更されたかどうかをブラウザが確認した後のサーバーの応答です (答えは「いいえ」です)。

最適な Web パフォーマンスを得るには、すべてのアセットに far-futureExpires:またはCache-Control: max-ageヘッダーを設定し、アセットを変更する必要がある場合は、アセットの実際のファイル名を変更するか、そのアセットのリクエストにバージョン文字列を追加することをお勧めします。これにより、アセットがキャッシュ内のバージョンから確実に変更されていない限り、要求を行う必要がなくなります (その 304 応答は必要ありません)。長期キャッシュの正しい使用方法については、 Google が詳しく説明しています。

于 2009-11-03T03:41:27.507 に答える
67

200 (キャッシュ) は、Firefox が単にローカルにキャッシュされたバージョンを使用していることを意味します。これは、Web サーバーへの要求が行われないため、最も高速です。

304 は、Firefox が「If-Modified-Since」条件付きリクエストを Web サーバーに送信していることを意味します。ブラウザーから送信された日付以降にファイルが更新されていない場合、Web サーバーは 304 応答を返します。これは基本的に、キャッシュされたバージョンを使用するように Firefox に指示します。要求は引き続き Web サーバーに送信されるため、200 (キャッシュ) ほど高速ではありませんが、サーバーはファイルの内容を送信する必要はありません。

最後の質問ですが、同じディレクトリにある 2 つの JavaScript ファイルが異なる結果を返す理由がわかりません。

于 2010-08-03T21:28:56.673 に答える
19

これも長い間私を投げました。最初に確認することは、更新ボタンをクリックしてページを再読み込みしていないことです。これにより、常にリソースの条件付きリクエストが発行され、多くのページ要素に対して 304 が返されます。代わりに、URL バーに移動してページを選択し、同じ URL をもう一度入力したかのように Enter キーを押します。これにより、適切にキャッシュされているものをより適切に示すことができます。この記事では、条件付きリクエストと無条件リクエストの違いと、更新ボタンがそれらに与える影響について説明しています 。 conditional-http-requests-and-the-refresh-button.aspx

于 2013-08-30T21:22:00.417 に答える
9

HTTP 304 は「変更されていません」。Web サーバーは基本的に、「このファイルは、最後に要求してから変更されていません」とブラウザに伝えています。HTTP 200 はブラウザに「ここに成功した応答があります」と伝えていますが、これは、ブラウザが初めてファイルにアクセスしたとき、または変更されたコピーに初めてアクセスしたときに返されます。

ステータス コードの詳細については、http://en.wikipedia.org/wiki/List_of_HTTP_status_codesをご覧ください。

于 2009-11-03T03:41:45.090 に答える