1

example.comのhttp://example.com/test.jpgなどのWebページに画像を読み込んでいます

ここで、そのページのハイパーリンクを介して、ユーザーが同じ画像が存在するexample.com/testpage.html(src http://example.com/test.jpgを使用)にアクセスした場合、ブラウザーは要求します。サーバーからのその画像をもう一度?

PS:私が直面している問題は、画像とJavaScriptがたくさんあるために、単一のhtmlページでのページレンダリングが遅いことです。そのため、ユーザーがページにアクセスしたときにいくつかの画像がすでに読み込まれているように、以前のリファラーURLにいくつかの画像を読み込む予定です。js/ajaxを介して非同期でページをロードする予定はないことに注意してください。指定されたページへの単純なリダイレクトを実行し、いくつかの画像がすでにロードされているようにしたい。

4

3 に答える 3

2

ドメインが同じで、キャッシュが正常に設定されている限り、ブラウザはリクエストを送信しますが、304 Not modify応答を受け取り、アセット全体を再度ダウンロードする必要はありません。

于 2012-10-06T23:15:00.093 に答える
1

ブラウザは画像を再度リクエストする場合としない場合があります。これは、ブラウザ、画像の古さ、最後に取得された日時などによって異なります。

ブラウザがリクエストに遭遇すると、最初にURLのキャッシュをチェックします

アイテムがキャッシュ内にあり、明示的な有効期限が設定されていて(expiresまたはcache-control:max-ageのいずれかを介して)、その有効期限が将来である場合、ブラウザーはキャッシュ内のバージョンを使用します。

アイテムがキャッシュにあり、将来の有効期限がない場合、ブラウザはヒューリスティックを使用して、リクエストを行う必要があるかどうかを判断できます。たとえば、昨日ダウンロードし、ファイルが6か月間変更されていない場合は、使用することを決定できます。キャッシュ内のバージョン(現時点では、どのブラウザがこれに対して何を実行するかは明確ではありません)

または、アイテムがキャッシュにある場合、ブラウザは「if-modified-since」リクエストを実行できます。キャッシュされたバージョンの日付以降にリソースが変更されていない場合、サーバーは304で応答します。それ以外の場合は、ファイルを送信します。

于 2012-10-08T11:03:22.087 に答える
0

単純な画像参照はキャッシュされ、一度だけロードされる必要があります。

画像のサイズを確認する必要があります。おそらく、表示がはるかに小さく、サーバー上でサイズを変更できる巨大な画像(読み込みに時間がかかる)があります。

于 2012-10-06T23:13:32.033 に答える