【すとりーみんぐさーばーさいどれんだりんぐ】

ストリーミングSSR とは?

公開:
💡 映画を全部ダウンロードしてから観るか、ストリーミングで今すぐ観るか
📌 このページのポイント
ストリーミングSSR vs 従来SSR 従来のSSR 全HTML生成中… 全HTML生成中… 全HTML生成完了! 一括送信 ユーザー:ずっと白画面… ストリーミングSSR チャンク1 完成 即座に表示 チャンク2 完成 追加表示 チャンク3 完成 追加表示 ユーザー:ヘッダーから見えてる! ReactのSuspenseで遅い部分を後から流し込む
ストリーミングSSRは準備できたHTMLから段階的に送信し、体感速度を上げる
ひよこ ひよこ
ペンギン先生、ストリーミングSSRって普通のSSRと何が違うの?
ペンギン先生 ペンギン先生
普通のSSRは全部のHTMLを作り終えてからまとめて送るんだけど、ストリーミングSSRは出来上がった部分から少しずつブラウザに送るんだよ。ページのヘッダー部分が完成したら即座に送って、ブラウザはそこから表示し始めるんだ。
ひよこ ひよこ
それって体感でわかるくらい速くなるの?
ペンギン先生 ペンギン先生
すごくわかるよ。特にデータベースへの問い合わせが遅いページで効果的で、ヘッダーやナビゲーションを先に表示しておいて、重いコンテンツは後から流し込めるんだ。ユーザーは「何か動いてる」と感じられるから離脱率も下がるんだよ。
ひよこ ひよこ
ReactのSuspenseと組み合わせるって、どういうこと?
ペンギン先生 ペンギン先生
ReactのSuspenseは「このコンポーネントのデータはまだ取得中」という状態を表現できるんだよ。ストリーミングSSRと合わせると、Suspenseで囲んだ遅い部分だけをプレースホルダー(スケルトン画像など)で先に送って、データが揃ったら差し替えるHTMLを後から流すことができるんだ。
ひよこ ひよこ
TTFBが改善するって言ってたけど、TTFBって何?
ペンギン先生 ペンギン先生
Time To First Byteの略で、ブラウザがリクエストを送ってからサーバーから最初の1バイトが届くまでの時間だよ。ストリーミングSSRは最初のチャンクをすぐ送るからTTFBが短くなって、SEO的にも有利になるんだね。
ひよこ ひよこ
Next.jsRemixで使えるんだね。自分で難しい実装をしなくていいの?
ペンギン先生 ペンギン先生
Next.js App RouterはデフォルトストリーミングSSRに対応していて、Suspenseを使うだけで自動で有効になるよ。サーバー側のHTTPレスポンスをチャンクで送るのはフレームワークが全部やってくれるから、開発者はSuspenseの境界をどこに置くかを考えるだけでいいんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
ストリーミングSSR」って出てきたら「HTMLを部分ごとに送って早く表示する技術」と思えればだいたいOK!
📖 おまけ:英語の意味
「Streaming Server-Side Rendering」 = ストリーミング・サーバーサイドレンダリング
💬 動画のストリーミング配信と同じ発想で、全部完成するまで待たずにHTMLを少しずつ流し込む技術だよ。
← 用語集にもどる