<link>
を<head>
に配置する
<link>
を<head>
に配置することは、最適化されたウェブサイトを構築するための適切な仕様の一部です。ページが最初にロードされるとき、HTMLとCSSは同時に解析されます。HTMLはDOM(Document Object Model)を作成し、CSSはCSSOM(CSS Object Model)を作成します。どちらもウェブサイトの視覚要素を作成するために必要であり、迅速な「最初の意味のある描画」のタイミングを可能にします。このプログレッシブレンダリングは、サイトのパフォーマンススコアを測定する最適化カテゴリです。スタイルシートをドキュメントの下部に配置すると、多くのブラウザでプログレッシブレンダリングが妨げられます。一部のブラウザは、スタイルが変更された場合にページの要素を再描画するのを避けるためにレンダリングをブロックします。ユーザーは真っ白なページを表示したままになります。また、スタイルが適用されていないコンテンツがちらつく(FOUC)こともあり、スタイルが適用されていないウェブページが表示されます。
<script>
を</body>
の直前に配置する
<script>
タグはダウンロードおよび実行中にHTMLの解析をブロックするため、ページの読み込みを遅くする可能性があります。スクリプトを下部に配置することで、HTMLが最初に解析され、ユーザーに表示されるようになります。
<script>
を下部に配置する例外は、スクリプトにdocument.write()
が含まれている場合ですが、最近ではdocument.write()
を使用することは良い習慣ではありません。また、<script>
を下部に配置すると、ブラウザはドキュメント全体が解析されるまでスクリプトのダウンロードを開始できません。これにより、DOM要素を操作する必要があるコードがエラーをスローしてスクリプト全体を停止させることがなくなります。<script>
を<head>
に配置する必要がある場合は、defer
属性を使用します。これは、HTMLが解析された後にのみスクリプトを実行するという同じ効果を達成しますが、ブラウザはスクリプトをより早くダウンロードできます。
スクリプトを閉じ</body>
タグの直前に配置すると、空のキャッシュでページがより速く読み込まれるという錯覚を生み出します(スクリプトがドキュメントの残りの部分のダウンロードをブロックしないため)。ただし、ページロード中に実行したいコードがある場合、それはページ全体がロードされてからのみ実行を開始します。これらのスクリプトを<head>
タグに配置すると、それらはより早く実行を開始するため、プライムキャッシュではページが実際に速く読み込まれるように見えます。
<head>
と<body>
タグは現在オプションです
HTML5の仕様によると、<head>
や<body>
などの特定のHTMLタグはオプションです。Googleのスタイルガイドでさえ、バイトを節約するためにそれらを削除することを推奨しています。しかし、この慣行はまだ広く採用されておらず、パフォーマンスの向上は最小限である可能性が高く、ほとんどのサイトでは問題にならないでしょう。