やあ。今日も今日とてコードレビューに追われてお疲れさん。
「Lighthouseのパフォーマンススコアが赤いままで、どうにかしてくれってマネージャーに詰められたんだよ……」なんて顔して席に戻ってきた後輩が、まさに君かい?
まあ落ち着きなよ。Webフロントエンドのパフォーマンスチューニングなんて、ブラウザが裏側でどう動いているか(=「ブラウザの気持ち」)を理解しちまえば、パズルみたいにスルスルと解けるようになるもんさ。
今日は、ブラウザのレンダリングパイプラインを強引にブーストさせる奥の手、「リソースヒント(`preload`, `prefetch`, `preconnect`)」について、俺の実務の泥臭い経験も交えながら徹底的に解説してやる。教科書には載ってない、ブラウザの内部挙動の裏側まで丸裸にしてやろうじゃないか。
—
1. なぜ「普通のHTML読み込み」では遅いのか?(ブラウザの裏側の話)
まず、敵を知るためにブラウザがHTMLを受け取ってから画面を描画するまでの「苦悩のプロセス」を思い出してほしい。
ブラウザはHTMLを上から順にパースしていく。
1. `` を見つけて、DOMツリーを作り始める。
2. 途中で `` にぶつかる。ここでCSSOMを作るためにCSSのダウンロードが完了するまでDOMの構築がブロックされる。
3. さらに `