UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【Next.js】getServerSidePropsとデータフェッチライブラリの効率が悪い場合があるという話

Next.js のgetServerSidePropsとswrやReact Queryなどのデータフェッチライブラリを一緒に使うと、効率が悪い場合があるという話を聞いた

getServerSidePropsとはNext.jsのデータフェッチ手法で、getServerSidePropsという関数をページからexportすると、リクエストごとにこの関数で返されるデータを使ってページ単位で事前フェッチする仕組み

もう一方のswrやReact Queryなどは、Hooks時代から利用され始めたコンポーネント単位でフェッチするデータフェッチライブラリ

これら2つは相互補完的に使うことができるが組み合わせた時に効率が悪い場合がある

具体的には、戻るや進む時にnext/linknext/routerを使ったページ遷移でそのページをリクエストした場合など

この時、データフェッチライブラリのキャッシュが有効であっても、getServerSidePropsによるデータフェッチが発生してしまう問題がある

getServerSidePropsの実行タイミングは以下に記載がある
nextjs.org

つまり、getServerSidePropsとデータフェッチライブラリのキャッシュが連携しない場合があるということ

この解決案としてはgetServerSidePropsの用途を限定するなどを紹介してもらったが、具体的な方法は公開されていないので記憶に留めておくとしてNext.js使うときは気をつけたい