測定画像HTTPリクエスト

測定画像HTTPリクエスト

一般的なブラウザでテスト ページを開き、Fiddler で http リクエストを表示してください。

1. 画像を非表示にする
<img src="1.jpg" style="display: none" />テスト: test_1.html
結論: Opera のみがリクエストを生成しません。
注意: visibility: hidden で画像を非表示にすると、Opera でもリクエストが生成されます。

2. 画像を繰り返す
<img src="1.jpg" /><img src="1.jpg" />テスト: test_2.html
結論: すべてのブラウザは 1 つのリクエストのみを実行します。

3. 背景の繰り返し
<style type="text/css"> .test1 { 背景: url(1.jpg) } .test2 { 背景: url(1.jpg) }</style><div class="test1">test1</div><div class="test2">test2</div>テスト: test_3.html
結論: すべてのブラウザは 1 つのリクエストのみを実行します。

4. 存在しない要素の背景
<style type="text/css"> .test1 { background: url(1.jpg) } .test2 { background: url(2.jpg) } /* ページ内にクラス test2 の要素はありません */</style><div class="test1">test1</div>Test: test_4.html
結論: 背景は、適用された要素がページ上に存在する場合にのみリクエストを生成します。これは CSS フレームワークには意味があります。

5. 要素の背景を非表示にする
<style type="text/css"> .test1 { background: url(1.jpg); display: none; } .test2 { background: url(2.jpg); visibility: hidden; }</style><div class="test1">test1</div>テスト: test_5.html
結論: Opera と Firefox は、display: none で非表示にされた要素の背景に対して HTTP リクエストを生成しません。背景画像は、これらの要素が display: none でない場合にのみ要求されます。

6. 複数の背景
<style type="text/css"> .test1 { 背景: url(1.jpg); } .test1 { 背景: url(2.jpg); }</style><div class="test1">test1</div>テスト: test_6.html
結論: Webkit レンダリング エンジンに基づく Safari と Chrome を除き、他のブラウザーは 1 つの背景画像のみを要求します。
注: WebKit ブラウザは CSS3 で複数の背景画像をサポートしているため、すべての背景画像を要求します。

7. ホバーバックグラウンド読み込み
<style type="text/css"> a.test1 { background: url(1.jpg); } a.test1:hover { background: url(2.jpg); }</style><a href="#" class="test1">test1</a>テスト: test_7.html
結論: ホバーがトリガーされると、ホバー状態の背景が要求されます。ちらつきの原因となるため、同じ背景画像内に配置し、反転させることが多いです。
注意: 画像のキャッシュがない場合、IE はホバー状態が変わるたびに新しいリクエストを生成します。とても悪いです。
2009-05-13 夕方に追記: 上記の説明は誤りです。より詳しい説明は続編を参照してください。反転テクニックはスプライト テクノロジを参照します (例: test_7b.html)。これにより、IE6 でちらつきは発生しません。

8. JS の innerHTML 内の画像
<script type="text/javascript"> var el = document.createElement('div'); el.innerHTML = '<img src="1.jpg" />'; //document.body.appendChild(el); </script> テスト: test_8.html
結論: Opera だけがすぐに画像を要求しません。
注意: Opera は、リクエストが DOM ツリーに追加された場合にのみリクエストを送信します。

9. 画像のプリロード
最も一般的に使用されるのは JS ソリューションです。

コードをコピー
コードは次のとおりです。

<script type="text/javascript"> new Image().src = '1.jpg'; new Image().src = '2.jpg';</script> JS がサポートされていない環境では、hidden 要素を使用してプリロードできます。
<img src="1.jpg" style="visibility: hidden; height: 0; width: 0" />テスト: test_9.html

最後にまとめ

1. Opera は、非表示要素の非表示画像や背景のリクエストを生成しません。
2. Firefox は、非表示の要素の背景に対するリクエストも生成しません。
3. Opera は、DOM ツリーにまだ挿入されていない img 要素に対するリクエストを生成しません。
4. Webkit エンジンをベースにした Safari と Chrome は複数の背景画像をサポートします。
5. その他のシナリオでは、すべての主要ブラウザは一貫性を保ちます。
画像リクエストの処理に関しては、Opera が最先端にあると個人的には思います。

余分な

1. Fiddler を使用して Opera を監視する場合、それがローカル サーバーである場合は、Opera のプロキシ サーバー設定でローカル サーバーを確認する必要があります。

2. HTTP リクエストの数を確認するもう 1 つの確実な方法は、Apache access.log ファイルを直接確認することです。

3. Firefox が、繰り返し画像と繰り返し背景に対して重複したリクエストを生成します。すべての拡張機能を無効にしましたが、問題は依然として存在します。詳細を知っている方がいらっしゃいましたら、お知らせください。

<<:  Linux で Ceph 分散ソフトウェアをインストールして使用する方法に関するチュートリアル

>>:  Uniapp は DingTalk スキャンコード ログイン サンプル コードを実装します

推薦する

HTML の空リンク href="#" と href="javascript:void(0)" の違い

# には位置情報が含まれます。デフォルトのアンカーは #top で、これは Web ページの上部です...

Vue プロジェクトにおけるトランジション コンポーネントの適用の概要

​Vue のトランジションは、アニメーション トランジションをカプセル化するコンポーネントです。一般...

JavaScript の知識: コンストラクタも関数である

目次1. コンストラクタの定義と呼び出し2. 新しいキーワードの目的3. コンストラクタの問題: メ...

一般的な JavaScript メモリ エラーと解決策

目次1. タイマー監視2. イベント監視3.オブザーバー4. ウィンドウオブジェクト5. DOM参照...

Linux プラットフォームの MySQL でリモート ログインを有効にする

開発中、MySQL へのリモートアクセスでよく問題に遭遇します。そのたびに検索する必要があり、面倒に...

HTML における if 判断の使用

Django Web開発の過程で、HTMLを書く際にバックエンドから同じ名前のリスト変数が渡されるが...

Windows サービス 2016 Datacenter\Stand\Embedded アクティベーション方法 (2021)

管理者権限でcmdを実行する slmgr /ipk CB7KF-BWN84-R7R2Y-793K2-...

docker デプロイメントの実装手順 lnmp-wordpress

目次1. 実験環境2. Dockerソースをインストールする3. Dockerをインストールする4....

7つのMySQL JOINタイプのまとめ

始める前に、これから紹介する JOIN タイプを示すために 2 つのテーブルを作成します。テーブルを...

Vue+echarts でプログレスバーのヒストグラムを実現

この記事では、プログレスバーヒストグラムを実現するためのvue+echartsの具体的なコードを参考...

モバイル開発における 1px ラインの理解と解決策

1pxの線が太くなる理由モバイルプロジェクトに取り組むとき、設計図に従って要素ノードのサイズとスタイ...

CSSとJSでロマンチックな流星群アニメーションを実現

1. レンダリング 2. ソースコードhtml < 本文 > < div クラス ...

HTML テーブル マウス ドラッグ ソート機能

効果画像: 1. ファイルをインポートする<script src="js/jquer...

MySQL ステートメントを使用した簡単な追加、削除、変更、クエリ操作の例

この記事では、例を使用して、MySQL ステートメントを使用して、単純な追加、削除、変更、およびクエ...

MySQL システム ユーザーが開くことができるファイルの最大数に関する簡単な説明

本から学ぶことは常に浅はかで、これがさらなるダウンタイムを引き起こすことには決して気づきません......