آنلاین

استراتژی‌های rendering در Angular

این راهنما کمک می‌کند برای بخش‌های مختلف application Angular خود، rendering strategy مناسب را انتخاب کنید.

Rendering strategy چیست؟

Rendering strategyها مشخص می‌کنند محتوای HTML مربوط به application Angular شما چه زمانی و کجا تولید شود. هر strategy بین performance مربوط به initial page load، interactivity، قابلیت‌های SEO و مصرف resourceهای server trade-offهای متفاوتی دارد.

Angular از سه rendering strategy اصلی پشتیبانی می‌کند:

  • Client-Side Rendering (CSR) - Content کاملا در مرورگر render می‌شود
  • Static Site Generation (SSG/Prerendering) - Content در build time از قبل render می‌شود
  • Server-Side Rendering (SSR) - Content برای initial request یک route، روی server render می‌شود

Client-Side Rendering (CSR)

CSR حالت پیش‌فرض Angular است. Content بعد از load شدن JavaScript، کاملا در مرورگر render می‌شود.

چه زمانی از CSR استفاده کنیم

✅ می‌تواند برای این موارد مناسب باشد:

  • Applicationهای interactive مثل dashboardها و admin panelها
  • Applicationهای real-time
  • Internal toolهایی که SEO برایشان مهم نیست
  • Single-page applicationهایی با client-side state پیچیده

❌ در صورت امکان، برای این موارد بهتر است از آن دوری کنید:

  • Content عمومی که به SEO نیاز دارد
  • صفحه‌هایی که initial load performance در آن‌ها حیاتی است

Trade-offهای CSR

AspectImpact
SEOضعیف - content تا زمان اجرای JS برای crawlerها قابل مشاهده نیست
Initial loadکندتر - ابتدا باید JavaScript download و اجرا شود
Interactivityبعد از load شدن، فوری
Server needsخارج از مقداری configuration، حداقلی
Complexityساده‌ترین حالت، چون با حداقل configuration کار می‌کند

Static Site Generation (SSG/Prerendering)

SSG صفحه‌ها را در build time به فایل‌های HTML static تبدیل و pre-render می‌کند. Server برای initial page load، HTML از پیش ساخته‌شده را می‌فرستد. بعد از hydration، app شما مثل یک SPA سنتی کاملا در مرورگر اجرا می‌شود؛ navigationهای بعدی، تغییر routeها و API callها همه بدون server rendering و در client-side رخ می‌دهند.

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

✅ می‌تواند برای این موارد مناسب باشد:

  • Marketing pageها و landing pageها
  • Blog postها و documentation
  • Product catalogهایی با content پایدار
  • Contentای که برای هر کاربر تغییر نمی‌کند

❌ در صورت امکان، برای این موارد بهتر است از آن دوری کنید:

  • Content مخصوص هر کاربر
  • Dataای که مرتب تغییر می‌کند
  • اطلاعات real-time

Trade-offهای SSG

AspectImpact
SEOعالی - HTML کامل بلافاصله در دسترس است
Initial loadسریع‌ترین - HTML از پیش generate شده
Interactivityبعد از کامل شدن hydration
Server needsبرای serving نیاز ندارد و CDN-friendly است
Build timeطولانی‌تر - همه صفحه‌ها را upfront generate می‌کند
Content updatesنیاز به rebuild و redeploy دارد

📖 Implementation: بخش Customizing build-time prerendering را در راهنمای SSR ببینید.

Server-Side Rendering (SSR)

SSR برای initial request یک route، HTML را روی server تولید می‌کند و dynamic content را با SEO خوب فراهم می‌کند. Server، HTML را render می‌کند و به client می‌فرستد.

وقتی client صفحه را render کرد، Angular app را hydrate می‌کند و سپس مثل یک SPA سنتی کاملا در مرورگر اجرا می‌شود؛ navigationهای بعدی، تغییر routeها و API callها همه در client-side و بدون server rendering اضافه انجام می‌شوند.

چه زمانی از SSR استفاده کنیم

✅ می‌تواند برای این موارد مناسب باشد:

  • صفحه‌های محصول در e-commerce، مثل قیمت‌گذاری یا inventory dynamic
  • News siteها و social media feedها
  • Content شخصی‌سازی‌شده‌ای که مرتب تغییر می‌کند

❌ در صورت امکان، برای این موارد بهتر است از آن دوری کنید:

  • Content static؛ به‌جای آن از SSG استفاده کنید
  • وقتی هزینه‌های server نگرانی مهمی است

Trade-offهای SSR

AspectImpact
SEOعالی - HTML کامل برای crawlerها
Initial loadسریع - content بلافاصله قابل مشاهده است
Interactivityتا hydration کمی تاخیر دارد
Server needsبه server نیاز دارد
Personalizationدسترسی کامل به user context
Server costsبالاتر - روی initial request یک route render می‌کند

📖 Implementation: بخش‌های Server routing و Authoring server-compatible components را در راهنمای SSR ببینید.

انتخاب strategy درست

Decision matrix

If you need...Use this strategyWhy
SEO + Static contentSSGHTML از پیش render شده و سریع‌ترین load
SEO + Dynamic contentSSRContent تازه روی initial request یک route
No SEO + InteractivityCSRساده‌ترین حالت، بدون نیاز به server
Mixed requirementsHybridStrategyهای متفاوت برای routeهای مختلف

Interactive کردن SSR/SSG با Hydration

وقتی از SSR یا SSG استفاده می‌کنید، Angular، HTML renderشده در server را "hydrate" می‌کند تا interactive شود.

Strategyهای در دسترس:

  • Full hydration - کل app یک‌جا interactive می‌شود؛ حالت پیش‌فرض
  • Incremental hydration - بخش‌ها در زمان نیاز interactive می‌شوند؛ performance بهتر
  • Event replay - clickها را قبل از کامل شدن hydration capture می‌کند

📖 بیشتر یاد بگیرید:

قدم بعدی