2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

HappyManaAdvent Calendar 2023

Day 7

なんでこんなに私のNext.jsは遅いのか

Posted at

はじめに

こんにちは、HappyManaです。
今回、Next.jsでの開発をして起きた問題について話していきたいと思います。

Next.jsのレンダリングが死ぬほど遅い

Next.jsを立ち上げたとき、初回で最大120秒ほどレンダリングに時間がかかります。

長すぎて萎えます。
まだ特にコードも追加してない、create-next-appしたときで23秒でした。

ここで、開発環境を整理すると、以下の感じになってます。

  • Docker
  • Next.js 13
  • Node.js 18
  • pnpm(パッケージ管理)

Dockerについては、APIサーバの方でRails+PostgreSQLを使っていたので、それ用のサーバも一緒に立ち上げるために使っています。

原因を考える

まず考えたのが私のPCのせいかなと思ったんですが、他の人のPCでも立ち上げ時間が変わらなかったので、違いました。
また、Cloudflare Pagesにデプロイしてみたところ爆速でレンダリングされたので関係ありませんでした。


次に、Dockerの環境が重すぎるのかと思いました。
Dockerfileは以下になってます。

FROM node:18

WORKDIR /usr/src/app

COPY package.json pnpm-lock.yaml ./

RUN npm install -g pnpm && \
    pnpm install

COPY . .

RUN pnpm build

EXPOSE 3000

CMD ["pnpm", "dev"]

調べたら、なんとImageのSizeが2.24GBありました笑
スクリーンショット 2023-12-25 21.30.26.png

これをなんとかするために、まずNodeのimageをslimに変更しました。

// before
FROM node:18

// after
FROM node:18-slim

これで、ImagのSizeは1.27GBまで減りました。
スクリーンショット 2023-12-25 21.54.48.png

まあまあですね。

また、初回レンダリングの時間も120秒から50秒に減ったのでまあまあ減ったのではないでしょうか...

まだまだ遅いので、もっと早くするためにいろいろ試していこうと思います。
(それはまた発見があり次第追記します...)

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?