• 1399/11/13

سوال راجع به Static Generation در nextjs :

سلام
یه سوالی برام پیش اومده در مورد nextjs:
ظاهرا نکست در حالت استاتیک‌(Static Generation) میاد و به ازای هر صفحه یه فایل HTML میسازه.
زمان ساختن این فایلای HTML هم موقع بیلد گرفتن از پروژه است.
بفرض اگه در بخش فروشگاه ۱۰۰ تا محصول داشته باشیم، میاد و ۱۰۰ تا فایل HTML میسازه برای هر کدومشون.
حالا سوالم اینه که اگه محصول ۱۰۱ اًم وارد سایت شد، تکلیف pre-rendering این صفحه چی میشه؟!

ممنون میشم جواب بدین

  • 1399/11/14
  • ساعت 12:17

سلام دوست عزیز؛

داستان این هست که توی pre-rendering همه محتوای صفحه تبدیل به فایل HTML نمیشه!

توی build-time یک صفحه HTML از محتوای استاتیک ساخته میشه که بعد از عملیات pre-rendering در زمان render شدن صفحه تازه کد های JS شما و کامپوننت هاتون ساخته میشن! پس یعنی دریافت اطلاعات و توابعی که نوشتین و ... همه برای بعد از pre-rendering هست.

حالا توی server side ما میایم به ازای هر درخواست و عملیاتی که کاربر انجام میده یک دور مجدد صفحه رو render می کنیم ولی توی static generation میاد یک صفحه HTML میسازه و دیگه به ازای هر درخواست نمیاد صفحه رو render بکنه.

برای همین این مطلب توی سایت خودشون هم نوشته شده :

 Static Generation is not ,On the other hand

a good idea if you cannot pre-render a page ahead of a user's request. Maybe your page shows frequently updated data, and the page content changes on every request.

دقیقا داره میگه اگر اطلاعات شما لازم هست که آپدیت بشه پیوسته و یا تغییری رخ بده از Static generation استفاده نکنید.


  • 1399/11/14
  • ساعت 13:03

ممنون
بله این پاراگرافو خودم هم خونده بودم توی سایت نکست.
حالا با این اوصاف برای مثالی که عرض کردم، بهتره از کدوم روش استفاده بشه؟
با این توضیحی که شما دادین فک میکنم بشه از Static generation استفاده کرد.
درسته؟!


  • 1399/11/14
  • ساعت 17:15

اگر سایت فروشگاهی هست بله بنظرم میشه چون هر سری که کاربر صفحه رو رفرش بکنه دوباره اون محصول 101 هم وارد لیست محصولات شده.

ولی اگر سایتی هست که نیاز به بروزرسانی مکرر اطلاعات داره بنظرم مناسب نیست.