24時間ぶんの要求43146件に対し、毎回その場で作ると平均応答は220.0msでした。
60秒で作り直す設定なら8.0msです。その代わり1.8%の要求に古い内容を返しました。
できているものを先に返すので応答は変わりません。差が出るのは鮮度のほうです。
Next.jsのこの作りでは、期限が切れても待たせません。出典の説明はこうです。
1時間が過ぎたあとでも、次の訪問者は、速い応答のために、蓄えられた版をただちに受け取るという記述です。作り直しは裏で走ります。
では古い内容はどれだけ出るのか。24時間ぶんの要求と更新を並べて数えました。
要求の時刻と中身が変わる時刻を先に決め、どの方式にも同じ列を使いました。
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時間の設定でも古い内容はほとんど出ません。先に測るべきは更新の間隔です。
応答は同じ。違うのは新しさのほう。
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の案内は長めにするほうへ寄っています。出典は「作り直しまでの時間は長めに設定することを勧める」と述べています。
理由を数字で確かめました。間隔だけを動かして測り直します。
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になります。
間隔を延ばすと、古さより回数のほうが大きく動く。
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件です。
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つの関係です。
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
同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。
出品の仕組みを見る