という問い合わせがあった際に、目的を説明できるようにしておきたいためのエントリ。
なお、私個人はSSR不要派の立場です。
SEOのため
動的なページで、SEO的なキーワード(meta、OGP、microdata含む)が固定できない場合、その内容に合わせてHTMLを出力することで適切にクローリングされたいから。
出し分けしたい
ユーザ状態によって極端にHTML構造が異なる場合(たとえば、PC/スマホを同じURLで提供したいけど画面がまるっきり違う場合とか、全然違う見た目のA/Bテストしたい時とか)、クライアントサイドでDOM操作するよりも効率が良いため。
早くしたい
ごついSPAで作られてて初期描画が遅くなるようなケースで、とにかく早く表示したい場合、サーバサイドでHTMLを作ったほうが比較的早いので。
クライアントサイドでできないことをやりたい
例えば、
- 共通鍵で暗号化されたデータを復号したい
- 動的なHTTPヘッダを付与したい
- クロスドメインなコンテンツを埋め込みたい
- ページにワンタイムトークンを埋め込みたい(CSRF対策例)
とか。。。
まあ、このくらいですかね。
逆にここらへんに対する反論や代替案がしっかりしてれば、サーバサイドレンダリング不要だよねに持ち込めるかも?
ちなみに、私がSSR不要派である一番の理由は、
せっかくビューを分離できたのにまた逆戻りするのが馬鹿らしく、言い知れない徒労感に苛まれるから、です。
(ざっくりいうと__無駄だからやりたくない__)