SSR とか SSG って何?
TL;DR
SPA のパフォーマンスや
SEO を改善するためのもの
もうちょっと詳しい説明
SPAの問題点
SPA(Single Page Application)を運用する際に発生する問題点
- SEO(Search Engine Optimization) の問題
- js を実行しないとコンテンツが見れないため、
crawler がサイトの内容にアクセスできない。
- js を実行しないとコンテンツが見れないため、
- Performance の問題
- SPA の場合、HTML 取得後に js の実行まで
コンテンツが表示されない時間がある。
- SPA の場合、HTML 取得後に js の実行まで
SSR(Server Side Rendering)
- サーバ側で表示するコンテンツの HTML を生成し返す。
- Node.js をサーバ側で動かすことで、Browser と同じ js を実行可能になった。
- しかし、アクセスごとに HTML を生成すると
サーバ側の負荷が高くなってしまう。 - そのためキャッシュの管理が必要になるが、キャッシュの破棄のタイミング管理などの煩雑な処理が増える。
SSG(Static Site Generation)
- SSR の HTML 生成処理を、サイトの build 時に行ってしまうのが、SSG。
- 動的な更新が不要なコンテンツ(ブログやリリースノートのような)であれば、静的な HTML を配信するだけになるので理論的に最速になる。
- SSR を使わないことで、サーバ側に Node.js が不要になる。
Next.js や Nuxt.js の役割
- React や Vue.js を使う際の Best Practice をまとめてくれている。
- SSR や SSG を一から設定するのはとても大変。
他にも webpack の設定だけでも凄く大変。
さらには依存しているライブラリの更新や設定の更新などもやってくれる。
モダンな frontend の歴史
SPA(Single Page Application)
- SPA 向け framework の出現
- 2012/06 に AngularJS がリリース
- 2016/09 に Angular がリリース
- 2013/05 に React がリリース
- 2014/02 に Vue.js がリリース
- 2012/06 に AngularJS がリリース
SSR(Server Side Rendering)
- SSR の対応時期
- 2014/04 の React v0.12 で使いやすくなった
- 2016/10 に Next.js v1 がリリース
- 2017/04 の Vue.js v2.3 で使えるようになった
- 2018/01 に Nuxt.js v1 がリリース
- 2014/04 の React v0.12 で使いやすくなった
SSG (Static Side Generation)
- SSG の対応時期
- Gatsby.js は 2017/07 にリリース
- Nuxt.js は 2018/01 の v1 から対応していた
- Next.js は 2020/03 の v9.3 で対応
- 2020/05 の v9.4 でさらに先進的な
ISG(Incremental Static Generation) に対応
- 2020/05 の v9.4 でさらに先進的な
おまけ:TypeScript
- 2012/10 に TypeScript が公開された
- 2014/04 に v1 がリリース
SSR とか SSG って何?
By Hiroki Horiuchi
SSR とか SSG って何?
- 294