NextAuth を使って認証処理を実装しているアプリで、ページアクセスからログイン状態になるまで少し時間がかかるのが気になっていた。 体感的にはアクセスから 2 秒ぐらい経ってからユーザーアイコンが表示される感じだった。
右上のユーザーアイコンが、アクセスから 2 秒ぐらい経つと表示される
調べたところ、Vercel のリージョンが原因だったことがわかったので書いていこうと思う。
Vercel のリージョンを東京に変えよう
リージョンによる通信遅延が発生するのは既知だったが、Vercel でリージョンの設定をする箇所があることを知らなかった。
Vercel > 該当のプロジェクト > Settings > Functions の「Function Region」で設定が可能。
デフォルトではワシントン D.C になっているので、ここを Tokyo に変更する。
リージョンを変更したらアプリの再起動が必要なので、改めてデプロイする。
リージョンを東京にするとセッション取得が爆速になる
リージョンを変更したときの差分が以下。2.09s かかっていたのが 722ms まで速くなった!
大体 2 倍以上速くなっていることがわかる。
体感的にもかなり速くなっていることを実感できた
終わりに
個人開発のアプリだったので、気になってはいたがまあ後でいいか〜と思い放置していた。でも調べてみると一瞬で解決することだったので、やはりこういうのは後回しにしないほうがいいなと改めて思った。ありがとう Vercel。