HTMLの<script>タグの位置は、ウェブページのパフォーマンスに影響しますか?
質問
scriptタグがHTMLページのbodyの上や下にある場合、Webサイトのパフォーマンスには関係ないのでしょうか?
また、このように間に使用された場合はどうでしょう。
<body>
..blah..blah..
<script language="JavaScript" src="JS_File_100_KiloBytes">
function f1() {
.. some logic reqd. for manipulating contents in a webpage
}
</script>
... some text here too ...
</body>
それともこっちの方がいいのかな?
<script language="JavaScript" src="JS_File_100_KiloBytes">
function f1() {
.. some logic reqd. for manipulating contents in a webpage
}
</script>
<body>
..blah..blah..
..call above functions on some events like onclick,onfocus,etc..
</body>
それともこれ?
<body>
..blah..blah..
..call above functions on some events like onclick,onfocus,etc..
<script language="JavaScript" src="JS_File_100_KiloBytes">
function f1() {
.. some logic reqd. for manipulating contents in a webpage
}
</script>
</body>
言うまでもないことですが、すべてが再び
<html>
タグの中にあります!
読み込み中にウェブページのパフォーマンスにどのような影響を与えるのでしょうか?本当にそうでしょうか? この3つのうちどれが一番いいのか、それともあなたが知っている他のものがいいのか?
そしてもう一つ、私はこのことについて少しググって、そこからここに行きました。
Web サイトを高速化するためのベスト プラクティス
というのがあって、それによると
スクリプトを一番下に配置する
とありますが、従来は多くの人が
<head>
タグの上にある
<body>
タグの上に記述します。これはルールではありませんが、多くの人がこの方法を好んでいます。もし信じられないのであれば
ソースを見る
をご覧ください。そして、最高のパフォーマンスを発揮するために、どのようなスタイルが良いのか教えてください。
どのように解決するのですか?
Javascript の資産は、デフォルトで、他の並列ダウンロードが発生しないようにブロックされる傾向があります。そのため、もしあなたがたくさんの
<script>
タグがたくさんある場合、複数の外部スクリプトを呼び出すことで
HTML
が読み込まれないため、ユーザーには真っ白な画面が表示されます。
まで
JS ファイルが完全に読み込まれるまで、ページの他のコンテンツは 読み込まれないからです。
この問題に対処するため、多くの開発者はJSをHTMLページの下部(</body>
タグの前)に配置することを選択しました。これは、ほとんどの場合、ユーザーがサイトとやり取りを始めるまで JS は必要ないため、論理的だと思われます。JS ファイルを一番下に配置することで、プログレッシブ レンダリングも可能になります。
別の方法として、Javascript ファイルを非同期に読み込むこともできます。これを実現するための既存の方法はたくさんあります。
var xhrObj = getXHRObject();
xhrObj.onreadystatechange =
function() {
if ( xhrObj.readyState != 4 ) return;
eval(xhrObj.responseText);
};
xhrObj.open('GET', 'A.js', true);
xhrObj.send('');
スクリプトDOM要素
var se = document.createElement('script');
se.src = 'http://anydomain.com/A.js';
document.getElementsByTagName('head')
[0].appendChild(se);
ミーボ・イフレームドJS
var iframe = document.createElement('iframe');
document.body.appendChild(iframe);
var doc = iframe.contentWindow.document;
doc.open().write('<body onload="insertJS()">');
doc.close();
いくつか挙げると...
ノート : 現在のブラウザでは、最大5つのスクリプトを並行して読み込むことができます。
について
IE
があり、そこに
defer
という属性があり、このように使うことができます。
<script defer src="jsasset.js" type="text/javascript"></script>
設定された場合、このブーリアン属性は は、ユーザエージェントに スクリプトは を生成しない(例えば、javascript で javascript の "document.write" がない)。 したがって,利用者エージェントは,解析及びレンダリングを継続することができる。 パースとレンダリングを続けることができます。
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] 私のJavaScriptコードは "No 'Access-Control-Allow-Origin' header is present on requested resource "というエラーを受け取りますが、Postmanはそうならないのはなぜですか?
-
[解決済み] HTMLのid属性に有効な値は何ですか?
-
[解決済み] なぜ ++[[]][+[] +[+[]] は "10" という文字列を返すのでしょうか?
-
[解決済み] HTMLマークアップのどこに<script>タグを記述すればよいですか?
-
[解決済み] 0.1fを0にすると、なぜ10倍もパフォーマンスが落ちるのですか?
-
[解決済み] HTMLの "role "属性は何のためにあるのですか?
-
[解決済み] スクリプトタグ - 非同期と遅延
-
[解決済み】なぜHTMLは "chucknorris "を色と見なすのか?
-
[解決済み] リダイレクトされずにHTMLフォームを送信する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Angularjs - 現在の日付を表示する
-
[解決済み] node.jsで文字列のsha1ハッシュを取得するにはどうすればよいですか?
-
[解決済み] 文字列が空白であるかどうかをチェックする
-
[解決済み] 兄弟ノードを選択する方法はありますか?
-
[解決済み] JavaScriptを使用してHTML要素に属性を追加/更新するには?
-
[解決済み] オブジェクトの配列からReactコンポーネントをレンダリングする
-
[解決済み] BlobからArrayBufferへ移行する方法
-
[解決済み] jQueryを使用して、すべてのクリックイベントハンドラを削除するにはどうすればよいですか?
-
[解決済み] JavaScript で `throw` の後に `return` をする必要がありますか?
-
[解決済み] Fetch: ステータスがOKでない場合、プロミスを拒否し、エラーをキャッチするか?