Suspense で包めば速くなる、という理解で合っていますか。
半分違います。遅いデータ取得自体は速くなりませんし、総時間もほとんど変わりません。変わるのは何が先に見えるかです。体感を変える手段であって、短縮する手段ではありません。
面接官が見ているのはストリーミングは総時間を縮めないと理解しているか。ここを誤解している人は多い。
これは「ページの隅にログインユーザー名を出したいだけです。そのために全体を動的にするのは避けたい。どうしますか。」への追撃質問です。
よくある答えと、面談でどう見られるか
- 総処理時間は変わらない。変わるのは何が先に見えるか
正確です。だから「なぜ遅いのか」に戻る必要があります。 - 合っている。並行に処理されるので全体も速くなる
並行化と混ざっています。Suspense は表示の区切りであって、処理を並行にする仕組みではありません。独立した取得を並行に走らせるのは、また別の対処です。 - 合っている。サーバーの負荷が下がるため
下がりません。やる仕事の総量は同じで、返す順番が変わるだけです。 - 半分合っている。体感は良くなるが、遅い処理自体は別途直す必要がある
この整理ができていれば十分です。隠すことと直すことを分けて話せています。
面接官は何を見ているか
- 総処理時間は変わらない、と正しく言えた
- 変わるのは「何が先に見えるか」だと説明できた
- 遅い処理そのものは別途直す必要があると繋げられた
模範解答
半分合っていて、半分違います。
Suspense で分けても、遅いデータ取得が速くなるわけではありません。全部揃うまでの総時間はほとんど変わりません。変わるのは「何が先に見えるか」です。遅い部分を待つ間に、それ以外を表示できるようになります。
だから効くのは体感速度と、指標でいえば最初に何かが表示されるまでの時間です。逆に、ページ全体が1つの遅いクエリに依存している場合は、Suspense をいくら入れても見えるものがないので効きません。
面談で差が出るのは、ここで「そもそもその処理がなぜ遅いのか」に戻れるかどうかです。ストリーミングは遅さを隠す手段であって、直す手段ではありません。隠したまま放置すると、データ量が増えたときに結局破綻します。