Static Site Generation (SSG) در مقابل Incremental Static Regeneration (ISR)
در SSG صفحات فقط یکبار در زمان Build ساخته میشوند و تا Deploy بعدی ثابت میمانند، در حالی که ISR اجازه میدهد صفحات استاتیک بعد از Build هم با یک بازه زمانی مشخص (revalidate) در پسزمینه بهروزرسانی شوند بدون نیاز به Build کامل دوباره کل سایت.
| ویژگی | Static Site Generation (SSG) | Incremental Static Regeneration (ISR) |
|---|---|---|
| زمان ساخت صفحه | فقط زمان Build | Build + بازسازی دورهای |
| نیاز به Deploy برای بروزرسانی | بله | خیر |
| مناسب برای | محتوای ثابت | محتوای نسبتاً پویا |
کِی از Static Site Generation (SSG) استفاده کنیم؟
وقتی محتوا کاملاً ثابت است (مثل صفحه درباره ما) و تغییرات فقط با Deploy جدید اتفاق میافتد.
کِی از Incremental Static Regeneration (ISR) استفاده کنیم؟
وقتی محتوا نسبتاً پویاست (مثل قیمت محصولات) اما نیازی به رندر آنی در هر درخواست ندارید و میخواهید همچنان از سرعت صفحات استاتیک بهره ببرید.
مثال Static Site Generation (SSG)
export async function getStaticProps() {
return { props: { data: await fetchData() } };
}
مثال Incremental Static Regeneration (ISR)
export async function getStaticProps() {
return {
props: { data: await fetchData() },
revalidate: 60, // هر ۶۰ ثانیه بازسازی میشود
};
}
اشتباه رایج
اشتباه رایج استفاده از SSG خالص برای دادهای است که مکرراً تغییر میکند (مثل موجودی انبار)؛ کاربران تا Deploy بعدی داده قدیمی میبینند، در حالی که با یک تغییر کوچک (افزودن revalidate) همان صفحه با ISR بهروز نگه داشته میشود.
جمعبندی
برای محتوای کاملاً ثابت از SSG و برای محتوای نسبتاً پویا که همچنان میخواهید سرعت صفحه استاتیک را حفظ کنید از ISR استفاده کنید.
