web-dev-qa-db-ja.com

キャッシュからリソースを使用すると、Firefoxは「304」応答を表示しますが、Chromeは「220(キャッシュから)」と表示します

サイトの最適化に取り組んでいるときに、Chrome Developer ToolsのネットワーキングタイミングがFirefox Developer Toolsのものと異なることに気付きました。

Chromeは非常に一貫して、ページに多数のアイテムをロードし、「200(キャッシュから)」応答を返します。 Firefoxの同じアイテムは、304応答アイテムとして表示されます。

誰もこれを説明できるかどうか疑問に思っています。以下は、同じリソースの2つのスクリーンショットです。最初はChromeから、2番目はFirefoxから。

Example from Chrome

example from Firefox

1
Jeffrey Simon

これは、アセット(画像など)がサーバーから優れた速度で配信される方法です。

  1. 新しい接続が確立されると、サーバーはイメージをステータスコード200(OK)で返します。また、少なくとも6か月に相当する秒単位の合理的なmax-age値を持つcache-controlヘッダー、または少なくとも6か月先の日付を持つexpiresヘッダー、あるいはその両方を返します。また、最終変更またはe-tagヘッダーが返されます。

  2. 手動で更新せずにリソースを再度要求すると、キャッシュの有効期限が切れていないため、アセットは非常に高速にロードされます。

  3. 約6か月後(キャッシュの有効期限が切れた後)、if-modified-sinceまたはif-none-matchヘッダー(last-modifiedまたはe-tagが最初のリクエスト後のブラウザ)、サーバーはヘッダー内のデータを比較して一致するかどうかを確認し、一致する場合、サーバーはコンテンツなしで304ステータスコードを返し、ブラウザにロードを継続できることを示します有効で最新のアセットのようにコンテンツをキャッシュします。

Google Chromeでは、キャッシュされた応答を304ステータスコードとして宣言するのが好きだと思います。 chromeは場合によってはcache-control max-age設定を無視することもオンラインで読んでいます。

参照: https://superuser.com/questions/313131/how-do-i-stop-chrome-sending-cache-control-max-age-0-when-i-hit-enter

1
Mike