Next.jsの運用方法について SSG?SSR?CSR?

次のような前提条件がある場合にどの方式でNext.jsを利用するべきなのかわからなかったので調べている。
結局正解はわからない...

  1. (OGP対応やSEO対策として)SSR は必要ではない
  2. 動的なコンテンツのページがある
  3. ユーザー情報など、変更が即座に反映されてほしいページがある


選択肢

SSG

コンテンツが動的に追加されていくので、 getStaticPaths を用いた静的エクスポートは要件を満たせない。

①getStaticPaths を使わずに next build & next export

一応同じようなことを試している記事はあった https://tech.readyfor.jp/entry/2020/12/11/160821
が、この方法事態の是非についてはあまり語られているところが見つけられず、あまり推奨されない方法なのだろうか?となっているが決定的なことはまだわからず...

この場合はベースとなるHTMLについてはSSGされて、データを含む部分はクライアント側でデータ取得→レンダリング というイメージ?
例えば /posts/:id のようなダイナミックルーティングを用いたパスがあるとすると、静的ファイルとして /posts/[id].html というファイルが吐き出される。
もしこれをamplifyやらnetlifyにそのままデプロイするとすると、/posts/1 にアクセスしたときには当然 posts/1.html というファイルは存在しないため、
ホスティングサービス側でリダイレクトの設定が必要になる。
amplifyで試してみたら次のような感じだった。

[
  {
    "source": "/posts/<*>",
    "target": "/posts/[name]",
    "status": 200
  }
]


メリット
  • サーバーを用意して運用する必要がない
  • (データ利用部分を除いて)SSRより初期表示が早い?
デメリット
  • 上記のようなリダイレクト設定を動的なパス毎にする必要がある。アプリが大きくなるにつれて面倒なことになりそうな予感。git管理してデプロイ時に自動で反映してくれたりすればまだいいけどどうなのか。CloudFormationに含めることはできそうだった。


②ISR

一定時間ごとにアクセスされる→次のリクエストから最新のコンテンツを返す
という挙動を許容できるかどうかによりそう。今回は許容できないということで不採用。

③SSR

必要がないならしないほうが面倒事少なくなっていいんじゃないかと思うけど実体験がないのでわからない

メリット
  • する必要ない場合はあるのだろうか?初期表示にコンテンツが含まれることがメリットになるならなりそうだけどそれくらい?
デメリット
  • サーバー運用する必要がある
  • SSRであることを意識したコードを書く必要がある


④CSR

メリット
  • 特に何も考えることがない、普通にReactを書けばいい
  • (Reactをそのまま利用する場合と比較して)Next.jsを使えること。(ルーティング、webpackいじらなくていいとか)。後々SSRとかしたい部分がでてきても切り替えられる
デメリット
  • サーバー運用する必要がある


結論

サーバー運用についてと、ダイナミックルーティングのためのリダイレクト設定についてそれぞれのコストを状況に応じて判断して
① or ④
になる?