アプリ/フロント基盤

Next.jsとは|60秒で作り直す設定なら、応答8.0msで古い内容は1.8%だけだった

毎回作る場合と何が違うのか古い内容はどれだけ出るのか作り直しの回数はどうなるのか

24時間ぶんの要求43146件に対し、毎回その場で作ると平均応答は220.0msでした。

60秒で作り直す設定なら8.0msです。その代わり1.8%の要求に古い内容を返しました。

この記事の要点

  • 毎回作ると220.0ms
  • 60秒なら8.0ms
  • 古い内容は1.8%
  • 1時間にすると49.3%

60秒で作り直す設定なら、応答8.0msで古い内容は1.8%だけだった

できているものを先に返すので応答は変わりません。差が出るのは鮮度のほうです。

Next.jsのこの作りでは、期限が切れても待たせません。出典の説明はこうです。

1時間が過ぎたあとでも、次の訪問者は、速い応答のために、蓄えられた版をただちに受け取るという記述です。作り直しは裏で走ります。

では古い内容はどれだけ出るのか。24時間ぶんの要求と更新を並べて数えました。

4つの方式を同じ列に当てる

要求の時刻と中身が変わる時刻を先に決め、どの方式にも同じ列を使いました

text
24時間ぶん。1ページへの要求 43146件、中身が変わったのは 51回
その場で作ると 220ms、できているものを返すだけなら 8ms

やり方              平均の応答  作り直した回数  古い内容を返した割合
毎回その場で作る                 220.0ms          43146回                  0.0%
60秒で作り直す                   8.0ms           1395回                  1.8%
1時間で作り直す                   8.0ms             24回                 49.3%
先に作っておくだけ                  8.0ms              1回                 99.4%

下の3つはすべて8.0msです。応答だけを見ると、どれも同じに見えます。

違うのは右の2列です。60秒なら古い内容は1.8%、1時間では49.3%に跳ねます。

跳ね方は更新の間隔で決まる

この計測では中身が平均30分に1回変わります。作り直しの間隔が30分を超えると、半分近くが古くなります。

つまり基準になるのは自分のページの更新間隔です。1時間という値そのものに良し悪しはありません。

更新が1日1回のページなら、1時間の設定でも古い内容はほとんど出ません。先に測るべきは更新の間隔です。

応答は同じ。違うのは新しさのほう。

割に合わない両立している使いどころが狭い速いだけ新しい古い内容の新しさ遅い速い応答の速さ毎回その場で作る60秒で作り直す1時間で作り直す先に作っておくだけ24時間・要求43146件での実測。中身が変わるのは平均30分に1回という前提での配置。
図1 ── 方式ごとの応答と新しさ
出典Next.js 公式ドキュメント「How to implement Incremental Static Regeneration (ISR)」2026-08-18 確認
After an hour has passed, the next visitor will still receive the cached (stale) version of the page immediately for a fast response.
原文Next.js 公式ドキュメント「How to implement Incremental Static Regeneration (ISR)」 この内容の有効期限2027-02-18

間隔を短くすると、作り直しの回数がそのまま増える

古さを1桁減らすには、作り直しを1桁増やすことになります。等価交換ではありません。

Next.jsの案内は長めにするほうへ寄っています。出典は「作り直しまでの時間は長めに設定することを勧める」と述べています。

理由を数字で確かめました。間隔だけを動かして測り直します。

間隔を10秒から1時間まで動かす

text
24時間ぶん。要求 43146件、中身が変わったのは 51回(平均30分に1回)
作り直しの間隔を変えて、古い内容を返した割合を見る

作り直しの間隔  作り直した回数  古い内容を返した割合  古さの平均
10秒                      7212回                  0.3%        0.1分
60秒                      1395回                  1.8%        0.4分
300秒                      287回                  9.2%        1.8分
1800秒                      48回                 36.3%       11.0分
3600秒                      24回                 49.3%       21.9分

60秒から10秒にすると、古い内容は1.8%から0.3%へ下がります。6分の1です。

その代わり作り直しは1395回から7212回になります。5.2倍です。

どこで折り合うか

右端の列を見るほうが判断しやすいものになります。60秒なら古さの平均は0.4分です。

300秒でも1.8分にとどまります。9.2%という割合の数字より、この1.8分のほうが実感に近いものです。

作り直しの回数は287回まで落ちます。60秒から300秒にするだけで、回数は5分の1になります。

間隔を延ばすと、古さより回数のほうが大きく動く。

短い間隔古さ0.1分。作り直し7212回長い間隔古さ21.9分。作り直し24回10秒(0.3%が古い)60秒(1.8%)300秒(9.2%)1800秒(36.3%)3600秒(49.3%)中身が平均30分に1回変わる場合の実測。更新間隔を超えたあたりから、古い割合が急に上がる。
図2 ── 作り直しの間隔の置きどころ
出典Next.js 公式ドキュメント「How to implement Incremental Static Regeneration (ISR)」2026-08-18 確認
We recommend setting a high revalidation time.
原文Next.js 公式ドキュメント「How to implement Incremental Static Regeneration (ISR)」 この内容の有効期限2027-02-18

裏で作り直す分も、動いた時間として数えられる

利用者は待ちませんが、処理そのものは走っています。回数がそのまま費用になります。

Next.jsの裏での作り直しは、無料ではありません。出典は裏での作り直しは、きっかけとなった要求を受け取った実体の上で走ると述べたうえで、要求ごとに課金される環境ではこれが追加の処理量として数えられると注意しています。

前の計測の作り直し回数は、そのまま費用の項目になります。

回数を費用として見る

毎回その場で作る方式は43146回でした。60秒の設定なら1395回で、31分の1です。

300秒にすると287回まで落ちます。毎回作る方式の150分の1です。

ここが効くのは、要求が多いページです。要求が増えても作り直しの回数は増えません。時間で決まるためです。

作り直し中に来た要求

期限切れから作り直しが終わるまでの間に来る要求も数えました。60秒間隔で134件です。

text
24時間ぶん。要求 43146件。作り直しには 220ms かかる
期限が切れてから作り直しが終わるまでのあいだに来た要求を数える

作り直しの間隔  作り直した回数  作り直し中に来た要求  待たせた場合の平均応答
60秒                      1395回                  134件                   8.7ms
300秒                      287回                   33件                   8.2ms
1800秒                      48回                    8件                   8.0ms

その134件を待たせたとしても、平均応答は8.7msにしかなりません。全体の0.3%だからです。

つまり作り直し中の待ちは、この規模では気にする必要がありません。気にすべきは回数のほうです。

要求の集中と待ち行列そのものはジョブキューの記事で測っています。

余談 この計測での注意

要求も更新も一定の割合で起きるものとして時刻を引きました。実際には昼夜の波があり、更新が特定の時刻に集中します。集中する場合、直後の作り直しまでの間だけ古い割合が跳ね上がります。1ページを作る220msという値も置いたものです。ここで見せているのは、古さは更新の間隔との比で決まり、作り直しの回数は要求数ではなく時間で決まるという2つの関係です。

出典Next.js 公式ドキュメント「How to implement Incremental Static Regeneration (ISR)」2026-08-18 確認
Background regeneration (stale-while-revalidate) runs on the instance that receives the triggering request.
原文Next.js 公式ドキュメント「How to implement Incremental Static Regeneration (ISR)」 この内容の有効期限2027-02-18

よくある質問

毎回作る場合と何が違いますか
応答が27.5倍違いました。毎回作ると220.0ms、できているものを返すだけなら8.0msです。
古い内容はどれだけ出ますか
間隔によります。60秒なら1.8%、1時間にすると49.3%の要求が古い内容になりました。
間隔は短いほどよいですか
作り直しの回数が増えます。10秒にすると7212回で、60秒の1395回の5.2倍でした。
作り直し中の要求はどうなりますか
古いほうを返せば8msのままです。この計測では60秒間隔で134件が該当し、平均応答は8.7msでした。

まとめ

  • できているものを先に返す
  • 期限が切れたら裏で作り直す
  • 間隔が古さを決める
  • 短くすると回数が増える

今日から始められること

  1. そのページの中身が変わる間隔を測る
  2. どこまでの古さなら許せるか決める
  3. その2つから作り直しの間隔を決める
  4. 作り直しの回数を費用に換算する

実務で組んだNext.jsのワークフローには、値段が付きます

同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。

出品の仕組みを見る