جستجو برای:
سبد خرید 0
  • صفحه اصلی
  • دوره های آموزشی
    • آموزش کتابخانه Ant Design به سادگی آب خوردن !
    • آموزش ساخت داشبورد حرفه ای با ری اکت !
    • آموزش فریمورک Tailwind CSS به زبان ساده!
    • آموزش HTML و CSS پروژه محور و اصولی !
  • وبلاگ
  • تماس با ما
  • درباره ما
logo-frontendi-150
0
  • خانه
  • دوره ها
  • وبلاگ فِرانت اِندی
  • تماس با ما
ورود / عضویت
  • صفحه اصلی
  • دوره های آموزشی
    • آموزش کتابخانه Ant Design به سادگی آب خوردن !
    • آموزش ساخت داشبورد حرفه ای با ری اکت !
    • آموزش فریمورک Tailwind CSS به زبان ساده!
    • آموزش HTML و CSS پروژه محور و اصولی !
  • وبلاگ
  • تماس با ما
  • درباره ما
ورود / عضویت

وبلاگ

فرانت اندی > وبلاگ فِرانت اِندی > ری اکت > SSG در ری اکت و نکست جی اس چیست ؟ ( رندر استاتیک در Next.js )

SSG در ری اکت و نکست جی اس چیست ؟ ( رندر استاتیک در Next.js )

16 آبان 1403
ارسال شده توسط احمد احمدنژاد
ری اکت، نکست جی اس
SSG در Next.js - رندر استاتیک در ری اکت - رندر استاتیک در نکست جی اس - Static Site Generation در ری اکت و nextjs

خیلی از ما وقتی داریم یه پروژه وب رو شروع می‌کنیم، همیشه دغدغه اینو داریم که سایت هم سریع لود بشه و هم کاربر تو استفاده ازش حال کنه. اینجاست که میرسیم به یه مفهوم جالب به اسم Static Site Generation یا همون SSG در Next.js و React !
شاید اولش بگی این دیگه چه مدلیه؟ بذار ساده بگم: تو این روش، به جای اینکه محتوا هر بار که کاربر سایتو باز می‌کنه در همون لحظه ساخته بشه ( یا سمت سرور ساخته بشه یا سمت مرورگر ) از قبل آماده شده و روی سرور قرار گرفته!
در حقیقت در زمان Build اپیکیشن ساخته شده.
اینطوری وقتی کاربر وارد یک صفحه میشه، مثل اینه که یه صفحه استاتیک و آماده که از قبل ساخته شده رو سریعا تحویل می‌گیره؛ خب همین یعنی سرعت لود بالا و تجربه بهتر!

ولی بذار بگم که این فقط یک طرف قضیه است. در ادامه، می‌خوام بهت توضیح بدم SSG در Next.js یا ری اکت دقیقاً چطور کار می‌کنه و چرا تو دنیای ری اکت و نکست جی اس انقدر سر زبون‌ ها افتاده. آماده‌ ای؟ بریم ببینیم این قصه چیه و چرا اهمیت داره!

Static Site Generation (SSG) به زبان ساده

خب، SSG یعنی چی؟ تصور کن یه وب‌سایتی داریم که توش مقاله یا محصولات مختلفی هست. اگه بخوایم همه اینا رو به‌صورت زنده از سرور بگیریم (مثل روش‌های قدیمی)، زمان لود کلی بالا میره. اما تو SSG، ما صفحات سایت رو همون موقع که پروژه ساخته میشه (مثلاً وقتی داریم اپلیکیشن رو کامپایل میکنیم) به‌صورت استاتیک میسازیم. بعد این صفحات استاتیک رو می‌ذاریم روی سرور و هرکی اومد، فوراً بهش تحویل میدیم.

این یعنی چی؟ یعنی صفحات خیلی سریعتر برای کاربر لود میشن و تجربه کلی استفاده از سایت بهتر میشه. اما همیشه و همه‌ جا این روش جواب نمیده.
روش Static Site Generation بیشتر مناسب سایت‌ هایی هست که محتوای ثابت دارن، مثل وبلاگ‌ ها یا سایت‌ های اطلاعاتی که نیاز به بروزرسانی مکرر ندارن.

چرا SSG در ری‌ اکت و نکست جی‌ اس مهم است؟

اگر قبلاً با ری‌ اکت (React) کار کرده باشی، میدونی که ری اکت از مدل رندرینگ CSR ( یعنی رندر سمت کلاینت ) استفاده میکنه که یکی از چالش‌ های بزرگش اینه که همه چیز روی مرورگر اجرا میشه! اگه با CSR آشنا نیستی پیشنهاد میکنم مقاله CSR در ری اکت رو مطالعه کنی.
این یعنی ممکنه سایت یه مقدار کندتر لود بشه، مخصوصاً اگه پروژه بزرگ باشه.
حالا نکست جی‌ اس (Next.js) اومده و یه سری قابلیت‌ های باحال بهت میده، یکی از مهم‌ترینشون هم همینه: تولید صفحات استاتیک!

نکست جی‌ اس با SSG بهت اجازه میده صفحات رو از قبل و به صورت استاتیک بسازی، یعنی سرعت لود صفحات بالا میره و عملکرد کلی سایت بهبود پیدا میکنه. این روش به خصوص برای سئو (SEO) هم عالیه، چون موتورهای جستجو مثل گوگل صفحات استاتیک رو راحت‌ تر ایندکس میکنن. پس اگه بخوای یه سایت سریع و Seo Friendly بسازی، SSG میتونه یه انتخاب عالی باشه.

نحوه عملکرد SSG در نکست جی‌ اس

قبلاً برای تولید صفحات استاتیک تو نکست جی‌ اس از متدهایی مثل getStaticProps و getStaticPaths استفاده میکردیم. اما تو نسخه‌ های جدید، داستان یه مقدار تغییر کرده. حالا میتونیم از App Router استفاده کنیم که امکانات بهتری برای مدیریت داده‌ ها و رندرینگ بهت میده.

با App Router، میتونی مستقیم تو سرور کامپوننت‌ ها از داده‌ ها استفاده کنی. مثلاً میتونی داده‌ها رو با fetch بگیری و از تنظیمات پیشرفته‌ ای برای کشینگ استفاده کنی. اینطوری دیگه کلی کد نویسی اضافی لازم نیست و همه چی بهینه‌ تر شده. در نتیجه، کار توسعه‌دهنده خیلی راحت‌ تر میشه.

مزایا و معایب SSG

حالا بیایید یه نگاهی به مزایا و معایب SSG بندازیم:

مزایا:

  • سرعت بالا: چون صفحات از قبل آماده هستن، زمان لود خیلی سریع‌ تر میشه.
  • سئو بهتر: موتورهای جستجو عاشق صفحات استاتیک هستن، چون راحت‌ تر میتونن محتوا رو ایندکس کنن.
  • کاهش بار روی سرور: نیازی نیست برای هر کاربر، دوباره صفحات رو رندر کنیم.

معایب:

  • محدودیت در داده‌های دینامیک: اگه محتوای سایتت مرتب تغییر میکنه (مثل یه سایت شبکه اجتماعی)، SSG بهترین گزینه نیست.
  • زمان ساخت اولیه: اگه سایتت بزرگ باشه، ساخت اولیه همه صفحات ممکنه زمانبر باشه.

موارد استفاده از SSG در پروژه‌ های واقعی

حالا بریم سراغ اینکه SSG دقیقاً کجا به درد میخوره. اینجا چند مثال عملی داریم:

  • وبلاگ‌ ها و سایت‌ های محتوایی: اگه سایتی داری که محتوای ثابت و مقاله‌های آرشیوی زیادی داره، SSG عالیه.
  • سایت‌ های شخصی و رزومه: صفحاتی که نیاز به بروزرسانی لحظه‌ ای ندارن.
  • فروشگاه‌ های آنلاین کوچک: اگه محصولاتت زیاد تغییر نمیکنن، میتونی با SSG یه تجربه سریع و بهینه برای کاربر بسازی.

مقایسه SSG با روش‌های دیگه (CSR و SSR)

بیاید یه مقایسه کوتاه بین SSG و دو روش معروف دیگه داشته باشیم:

  • CSR (Client-Side Rendering): تو این روش همه چی روی مرورگر کاربر لود میشه و این میتونه سرعت سایت رو کاهش بده. ولی خب این روش برای اپلیکیشن‌ های پیچیده‌ تر لازمه.
  • SSR (Server-Side Rendering): تو SSR، محتوای سایت هر بار روی سرور رندر میشه و میتونه به کاربر تحویل داده بشه. سرعت خوبی داره ولی منابع سرور بیشتری مصرف میکنه.
  • SSG: بهترین انتخاب برای سایت‌ هایی که محتوای ثابت دارن، چون صفحات از قبل ساخته میشن و فوراً به کاربر میرسن.

نکات بهینه‌سازی SSG در نکست جی‌اس

حالا چند تا ترفند برای بهینه‌سازی SSG تو نکست جی‌اس:

  • کشینگ هوشمند: مطمئن شو که از کشینگ مناسب استفاده میکنی تا نیاز به بازسازی مداوم نداشته باشی.
  • استفاده از ISR (Incremental Static Regeneration): اگه نیاز داری گاهی صفحاتت به‌روزرسانی بشن، ISR میتونه به دردت بخوره.
  • استفاده بهینه از منابع: فقط صفحاتی رو استاتیک کن که نیاز دارن و بقیه رو به روش‌های دیگه هندل کن.

پیاده سازی SSG در Next.js 14 !

برای پیاده‌ سازی یک صفحه SSG در Next.js با استفاده از نسخه‌ های جدید، میشه از getStaticProps برای دریافت داده‌ ها و پیش‌ رندر کردن صفحه در زمان ساخت (build) استفاده کرد:

 
				
					// pages/posts/[id].js

export default function Post({ post }) {
  return (
    <div>
      <h1>{post.title}</h1>
      <p>{post.content}</p>
    </div>
  );
}

// این تابع در زمان build فراخوانی می‌شود
export async function getStaticProps({ params }) {
  // گرفتن داده‌ها از یک API خارجی
  const res = await fetch(`https://api.example.com/posts/${params.id}`);
  const post = await res.json();

  return { props: { post } };
}

// مشخص کردن مسیرهای دینامیک برای پیش‌رندر کردن
export async function getStaticPaths() {
  const res = await fetch('https://api.example.com/posts');
  const posts = await res.json();

  // تولید مسیرها بر اساس شناسه پست‌ها
  const paths = posts.map((post) => ({
    params: { id: post.id.toString() },
  }));

  return { paths, fallback: false };
}

				
			
  • getStaticProps: داده‌ها را در زمان ساخت میگیرد و آنها را به عنوان props به صفحه پاس میدهد.
  • getStaticPaths: مسیرهای دینامیکی را مشخص میکند که باید در زمان ساخت پیش‌ رندر شوند.
  • fallback: false: اگر مسیری وجود نداشته باشد، صفحه 404 نمایش داده میشود.

نتیجه‌گیری

استفاده از Static Site Generation (SSG) در Next.js میتونه یه انتخاب هوشمندانه برای بهینه‌ سازی سرعت و عملکرد سایت‌های مبتنی بر ری‌ اکت و نکست جی‌ اس باشه.
این روش به خصوص برای سایت‌ هایی با محتوای نسبتاً ثابت، مثل وبلاگ‌ ها یا صفحات اطلاعاتی، عملکرد فوق‌ العاده‌ای داره.
با اینکه SSG مشکلات خاص خودش رو داره ( مثل زمان ساخت اولیه بالا یا چالش‌ هایی در مدیریت محتوای دینامیک ) اما به لطف ابزارها و امکانات جدید نکست جی‌ اس، حالا خیلی ساده‌ تر و کارآمدتر شده.

اما نکته مهم اینه که انتخاب بین SSG، CSR، و SSR بستگی به نیازهای خاص پروژت داره. همیشه باید بین سرعت، سئو، و منابع سرور یه تعادل برقرار کنی.
با آشنایی و بروزرسانی دانش خودت در مورد این تکنیک‌ ها، میتونی تصمیم‌ های بهتری بگیری و پروژه‌ های موفق‌ تری بسازی.

در نهایت، اگر تازه میخوای کار با SSG رو شروع کنی، پیشنهاد می‌کنم با پروژه‌های کوچیک‌ تر تمرین کنی و به تدریج به بهینه‌ ترین روش‌ ها برای پروژه‌ های بزرگتر برسی. امیدوارم که مقاله SSG در Nextjs برات مفید واقع شده باشه 🙂

SSG در Next.js چیست؟

SSG یا همون Static Site Generation به معنی تولید صفحات استاتیک در زمان ساخت (build) است، که موجب افزایش سرعت لود و بهبود سئو می‌شود.

تفاوت SSG با SSR چیست؟

SSG صفحات را در زمان ساخت تولید می‌کند، در حالی که SSR (Server-Side Rendering) صفحات را در هر درخواست رندر می‌کند.

چه زمانی باید از SSG استفاده کنم؟

برای صفحاتی که محتوای ثابت دارند یا به‌ ندرت تغییر می‌کنند، مثل وبلاگ یا صفحات اطلاع‌ رسانی.

آیا SSG به بهبود سئو کمک می‌کند؟

بله، چون صفحات استاتیک سریع‌ تر لود می‌ شوند و موتور های جستجو می‌توانند راحت‌تر آن‌ها را ایندکس کنند.

آیا SSG همیشه گزینه بهتری است؟

نه، اگر محتوای سایت بصورت مداوم تغییر می‌کند، روش‌های دیگری مثل ISR یا SSR مناسب‌ تر هستند.

getStaticProps چیست؟

متدی است که برای دریافت داده‌ ها و تولید صفحات استاتیک در زمان build استفاده می‌شود.

getStaticPaths چه کاربردی دارد؟

این متد مسیرهای دینامیک را مشخص میکند که باید در زمان ساخت بصورت استاتیک تولید شوند.

آیا می‌توان از SSG برای صفحات دینامیک استفاده کرد؟

بله، اما باید از getStaticPaths برای تعریف مسیرهای دینامیک استفاده کنید.

آیا SSG مناسب وب‌ سایت‌های بزرگ است؟

برای سایت‌ های بزرگ، میتوان از ترکیبی از SSG و ISR (بازسازی استاتیک تدریجی) استفاده کرد تا مدیریت داده‌ ها آسانتر شود.

چطور میتوان از کشینگ در SSG استفاده کرد؟

با تنظیم revalidate در getStaticProps می‌توانید صفحات را بصورت دوره‌ای بروزرسانی و بازسازی کنید.

سوالات متداول فِرانت اِندی
درباره احمد احمدنژاد

من یه برنامه نویس و توسعه دهنده وب هستم که عاشق دنیای صفر و یکم❤️

نوشته‌های بیشتر از احمد احمدنژاد
قبلی CSR در ری اکت و نکست جی اس چیست ؟ ( رندر سمت کلاینت در ری اکت )
بعدی 400 سوال مصاحبه فرانت اند ! بزرگترین لیست سوالات مصاحبه فرانت اند !

دیدگاهتان را بنویسید لغو پاسخ

جستجو برای:
پیاده سازی و مشاوره فِرانت اِند!

پیاده سازی اصولی و بهینه پروژه های فِرانت اِند در کمترین زمان ممکن 🙂

پیاده سازی و مشاوره

صفحات فِرانت اِندی
  • وبلاگ
  • تماس با ما
  • درباره ما
تماس با ما
  • [email protected]
  • 09102944692
شبکه های اجتماعی
Youtube Instagram Telegram
اشتراک گذاری در شبکه های اجتماعی
ارسال به ایمیل
https://frontendi.com/?p=14040
مرورگر شما از HTML5 پشتیبانی نمی کند.