2017-08-16 5 views
2

次のコードを見てください。 Chromeは1つのリクエストをデバッグコンソールに記録します。これがキャッシングのためである場合、なぜ2つのリクエストが最後のリクエストを304で記録しないのですか?新しいImage()。src = "同じurl"を2回コーディングしますが、ブラウザはただ1つのリクエストをキャッチできます

このブラウザの動作について説明しますか?

<script> 
    new Image().src="//stackoverflow.com/" 
    new Image().src="//stackoverflow.com/" 
</script> 
+1

これは304の答えではありません。 Chromeは304件のリクエストを表示します。私はクロムが最初のリクエストをキャッシュし、2番目がキャッシュヒットだと思います。 – Wartoshika

+0

複数のリクエストを促す場合は、URLに異なる_GET_パラメータを追加してください。 –

答えて

1

同じ画像を2回要求しています。この動作はHTML5仕様で実際に説明されています。引用:リソースは、絶対URLによって識別され、リソースが冪等のアクションを使用して得られる である

場合(例えば、HTTP GET又は 相当)、それは既に他の理由のためにダウンロードされています (例えば、別のこのアルゴリズムの呼び出し)、およびこの要求が前のもの(例えば、同じAcceptOrigin ヘッダ)、およびユーザエージェントと同一 になり、それが既存のダウンロードから データを再利用するように構成されています新しいものを起動するのではなく、 を実行してから、0を開始する代わりに既存のダウンロードの結果を使用します新しいもの。

HTML5 > Common infrastructure > Fetching resources > Processing model

基本的に、それはあなたが正確に同じリソースを複数回要求した場合、ブラウザは一度だけ(または全くそれをダウンロードし、代わりにキャッシュからサーブ)、それをダウンロードすることを言います。逆の順序で

関連スペック:

3

ブラウザはすでに画像をダウンロードしていますが、同じ画像に対して別の要求を行う理由は何ですか?ページ上でイメージが複数回使用されると(それは定期的に発生します)、使用されている各インスタンスに対して個別の要求を行うと、大量の不要なオーバーヘッドが発生します。同じページ内の同じURLを持つ2つの画像は同じ画像とみなされます。

+2

このエフェクトは、同じファイル名の画像が間隔を空けて読み込まれても同期しているGIFアニメーションで特に見られます。私は少し前に他の質問に答えてデモを作った:http://adamhaskell.net/misc/numbers/numbers.html –

関連する問題