私はいくつかのページが新しいImage.src = '';によってページにJavaScriptファイルを読み込むのを見ました。Javascriptライブラリをイメージとしてダウンロードしていますか?
<script type="text/javascript">
new Image().src = "XXXX\/js\/jquery-1.7.2.min.js";
</script>
私はこれの利点または目的を疑っていました。
私はいくつかのページが新しいImage.src = '';によってページにJavaScriptファイルを読み込むのを見ました。Javascriptライブラリをイメージとしてダウンロードしていますか?
<script type="text/javascript">
new Image().src = "XXXX\/js\/jquery-1.7.2.min.js";
</script>
私はこれの利点または目的を疑っていました。
これは、質問のコメントから推測されるように、HTTPリクエストを開始するためのすばやく簡単な方法です。
ページの上部でダウンロードを開始し、ページの下部に<script src='the-same-file.js'></script>
を含めて、ブラウザキャッシュからファイルをロードできるようにすることで、わずかな利点が得られます。
このは、ダウンロードの遅延を解析タスクと並列化することができます。たとえば、body
がまだ解析されている間に、head
で開始されたダウンロードが実行される可能性があります。
src
属性を使用してヘッド内のファイルを参照するだけではどうですか?
[延期またはasync]属性でもないが存在する場合、スクリプトが取り出され、ユーザエージェントが ページを解析続行する前に は、すぐに実行します。すなわち
、この方法は、ブラウザは、後工程におけるまでブロッキング挙動を招くことなく、ファイルをダウンロードすることを可能にすることを試みます。
しかし
new Image()
ハックよりも、このような目的のために意図されてdefer
属性を検討します。
いくつかの主要なサイト(Google検索、GmailやTwitterやFacebook、ネットフリックス)の迅速な調査の結果、この技術は、JavaScriptファイルを取得するために使用され、非常に使用されていないことを示しています控えめに全体的に。
たとえば、Facebookはキャッシュ/パフォーマンスではなく、サイトが(潜在的に悪質な)フレームセットに読み込まれたときに追跡目的で使用されているようです。 Image
インスタンスを作成し、ソースを設定すると、clickjackingの試行を追跡するページへのHTTPリクエストが開始されます。
これは独立したケースです。通常の状況下ではこのスクリプトは実行されません。
これは、画像やクリック追跡の事前ロードに使用されます。 –
@DavorMlinaricしかし、彼らは明らかにここに画像をロードしていません。 jQueryをロードしています。クリックトラッキング?多分。 –
実際の例へのリンクはありますか?私は、ライブラリーをプリロードすることを意図していると思います。そのため、将来のフェッチがキャッシュからロードされます(ただし、なぜそれを行う必要があるのかはわかりません)。 – apsillers