RailsはHTTPヘッダーを介して情報をサーバへ送信することが可能です。

通常のHTTPリクエスト

  1. ブラウザがHTMLをリクエストする
  2. サーバがリクエストを受け付けてDBに問い合わせなどを行いHTMLを生成する
  3. ブラウザがHTMLを受け取る
  4. JAvaScriptやCSS、画像などのアセットをリクエストする
  5. ブラウザがアセットを受け取る
  6. アセットのパース
  7. HTMLのレンダリングが完了する

HTMLの生成が終わってからアセットのリクエストを行っているので、表示完了が遅くなってしまいます。これを解決するための仕様としてEarly Hintsがあります。

Early Hints

ステータスコード103として、本来のレスポンスを送る前に、リソースのヒント(application.jsやapplication.css)を送ることができます。これによりサーバがHTMLを生成している間にブラウザはアセットをロードすることができるので、大幅に全体の処理時間を短縮できます。

※ Early Hintsを使うときはリバースプロキシを介して使用することが現実的です。そうすることでHTTP2のサーバープッシュでレスポンスを返すことができます。

HTTP2では1つのコネクション上で複数並列に扱うことができます。

HTTP/2の特徴 HTTP/1.1との違いについて | REDBOX Labo

サーバープッシュを利用するとサーバーは特定のリソースをクライアントにまとめてプッシュできるため、リクエストが到着しなくてもブラウザのキャッシュで将来のレスポンスを準備することができます。

HTTP/2 Server Pushとは?(CDN サーバープッシュでWeb高速化) | REDBOX Labo

Content Security Policy(CSP)