
- بواسطة x32x01 ||
لو عايز موقعك يحمل بسرعة
وعايز صفحات الزوار يشوفوها جاهزة من غير ما يستنوا، يبقى لازم تتعلم Server-Side Rendering (SSR) في Next.js.
ببساطة، SSR بيخلي الصفحة تتعمل Render على السيرفر الأول وبعدين تبعتها للزائر جاهزة، بدل Client-Side Rendering (CSR) اللي بيخلي المتصفح يبني الصفحة عنده ويستنى الداتا تتحمل
.


.
كده الزائر هيلاقي الصفحة أسرع و Loading هيبقى أقل، وكمان تجربة المستخدم (UX) هتتحسن بشكل كبير
.
مثال عملي:
في المثال دا، السيرفر بيجيب البيانات من API ويعمل Render للصفحة قبل ما الزائر يشوفها. النتيجة؟ صفحة جاهزة على طول و Loading أقل
.
.
.

ببساطة، SSR بيخلي الصفحة تتعمل Render على السيرفر الأول وبعدين تبعتها للزائر جاهزة، بدل Client-Side Rendering (CSR) اللي بيخلي المتصفح يبني الصفحة عنده ويستنى الداتا تتحمل


يعني إيه SSR بالظبط؟
بدل ما الزائر يستنى الموقع يبني عنده من الأول في المتصفح، السيرفر هو اللي بيعمل Render للصفحة ويبعتها جاهزة


كده الزائر هيلاقي الصفحة أسرع و Loading هيبقى أقل، وكمان تجربة المستخدم (UX) هتتحسن بشكل كبير

إزاي تفعل SSR في Next.js؟
في Next.js الموضوع سهل جدًا، هتستخدم getServerSideProps في أي صفحة عايزها Server-Rendered. الفنكشن دي بتجيب الداتا اللي الصفحة محتاجاها وبتعمل Render على السيرفر قبل ما الزائر يشوف الصفحة.مثال عملي:
JavaScript:
export async function getServerSideProps() {
const res = await fetch('https://api.example.com/data');
const data = await res.json();
return { props: { data } };
}
export default function Home({ data }) {
return ( <div> <h1>البيانات دي جاية من السيرفر</h1> <pre>{JSON.stringify(data, null, 2)}</pre> </div>
);
}

ليه تستخدم SSR في مشروعك؟
- Performance أعلى: الصفحة بتكون جاهزة للزائر على طول
- تحسين SEO: محركات البحث زي Google بتحب المحتوى الجاهز والسريع، وده بيحسن ترتيب موقعك في النتائج
- Real-time Data: لو عندك بيانات بتتحدث باستمرار زي الأخبار أو الأسعار، SSR يضمن إن الزائر يشوف أحدث نسخة منها

نصايح سريعة لتحسين الأداء مع SSR
- حاول تقلل حجم الداتا اللي السيرفر بيجيبها
- استعمل Caching عشان تقلل الضغط على السيرفر
- لو الصفحة محتاجة تتحدث كل شوية، خليها Dynamic بس استخدم SSR للجزء الأساسي
- ركز على تحسين الصور والـ Assets لتسريع التحميل أكثر
- دمج SSR مع Incremental Static Regeneration (ISR) لو محتوى الصفحة مش بيتغير كل لحظة

التعديل الأخير:

- بواسطة x32x01 ||
ممكن يجى حد يقول
معلش يا هندسة طب ما الريأكت العادي بيعمل كده بيعمل spa و الـ function اللي حضرتك عملتها دي بستخدم fetch بجيب داتا من الapi على شكل json file يعني الbackend بيعبتلي داتا و أنا بعرضها بمعرفتي في الbrowser
أود أن أقول له :
الـ React العادي SPA الصفحة بتتبني في المتصفح بعد ما البيانات توصل من الـ API. ده بيعمل Loading للبيانات قدام الزائر.
لكن الـ SSR في Next.js الصفحة بتتبني على السيرفر وتتبعت جاهزة بالبيانات للمتصفح ف كدا الزائر بيشوف الصفحة بسرعة من غير ما يستني.
فالاختلاف الأساسي زي منت شايف في ال SSR السيرفر بيعمل الشغل الأول وفي SPA المتصفح هو اللي بيعمله
معلش يا هندسة طب ما الريأكت العادي بيعمل كده بيعمل spa و الـ function اللي حضرتك عملتها دي بستخدم fetch بجيب داتا من الapi على شكل json file يعني الbackend بيعبتلي داتا و أنا بعرضها بمعرفتي في الbrowser
أود أن أقول له :

الـ React العادي SPA الصفحة بتتبني في المتصفح بعد ما البيانات توصل من الـ API. ده بيعمل Loading للبيانات قدام الزائر.
لكن الـ SSR في Next.js الصفحة بتتبني على السيرفر وتتبعت جاهزة بالبيانات للمتصفح ف كدا الزائر بيشوف الصفحة بسرعة من غير ما يستني.
فالاختلاف الأساسي زي منت شايف في ال SSR السيرفر بيعمل الشغل الأول وفي SPA المتصفح هو اللي بيعمله