I'm always excited to take on new projects and collaborate with innovative minds.

Phone

+20 115 052 9992

Website

https://ibrahimahmed.online/

Social Links

إزاي تسرع تطبيقات Next.js العملاقة باستخدام الـ Edge Middleware؟

إزاي تسرع تطبيقات Next.js العملاقة باستخدام الـ Edge Middleware؟ لو أنت شغال على مشروع Next.js كبير، أكيد حسيت بالوجع ده: الموقع تقيل، الـ Core Web Vitals بتضرب

إزاي تسرع تطبيقات Next.js العملاقة باستخدام الـ Edge Middleware؟
Reading Count: 43

إزاي تسرع تطبيقات Next.js العملاقة باستخدام الـ Edge Middleware؟

لو أنت شغال على مشروع Next.js كبير، أكيد حسيت بالوجع ده: الموقع تقيل، الـ Core Web Vitals بتضرب في الـ Search Console، والـ LCP (Largest Contentful Paint) مش راضي يتحسن مهما عملت Optimization للصور أو الكود. المشكلة مش دايماً في الكود بتاعك، المشكلة غالباً في "المشوار" اللي بيقطعه الطلب (Request) لحد ما يوصل للسيرفر ويرجع تاني. النهاردة هنتكلم عن "الـ Edge Middleware" وإزاي يكون هو الحل السحري لتسريع تطبيقك وتقليل الـ Latency لأقصى درجة.

يعني إيه أصلاً Edge Middleware؟

تخيل إن سيرفرك الرئيسي موجود في أمريكا، واليوزر بتاعك في مصر. الطلب بياخد وقت عشان يسافر، يترد عليه، ويرجع تاني (ده اللي بنسميه Round Trip Time). الـ Edge Middleware عبارة عن كود بسيط بيشتغل على شبكة الـ CDN (زي Vercel Edge Network) اللي موجودة في أقرب نقطة جغرافية لليوزر. قبل ما الطلب يوصل لسيرفرك (Origin Server)، الـ Middleware بيلحقه ويعمل عليه شوية عمليات خفيفة وسريعة جداً.

إزاي الـ Edge Middleware بيحسن الـ Core Web Vitals؟

الهدف الأساسي هنا هو تقليل الـ TTFB (Time to First Byte). لما بتعمل عمليات التوجيه (Routing) أو تخصيص المحتوى (Personalization) عند الـ Edge، أنت بتشيل حمل كبير جداً من على السيرفر الرئيسي وبتوفر وقت استجابة كان بيضيع في الـ Backend. ده بيخلي المتصفح يبدأ يحمل المحتوى بدري جداً، وده بينعكس فوراً على الـ LCP والـ FCP (First Contentful Paint).

تطبيق عملي: التوجيه الذكي بناءً على الموقع الجغرافي (Geo-location)

بدل ما تخلي السيرفر هو اللي يحدد موقع المستخدم، ممكن الـ Middleware يعمل ده بلمحة عين. شوف الكود البسيط ده:


import { NextResponse } from 'next/server';

export function middleware(request) {
  const country = request.geo?.country || 'US';
  
  if (country === 'EG') {
    return NextResponse.rewrite(new URL('/eg', request.url));
  }
  
  return NextResponse.next();
}

export const config = {
  matcher: '/',
};

هنا إحنا عملنا توجيه (Routing) للمستخدم المصري لصفحة مخصصة ليه، وكل ده حصل قبل ما الـ Request يلمس الـ Next.js Server أصلاً. ده بيخلي التجربة للمستخدم سريعة جداً كأنه بيفتح موقع محلي.

نصائح احترافية لتعظيم الاستفادة

  • ماتحطش منطق معقد (Heavy Logic): الـ Middleware بيشتغل في بيئة V8 isolate، يعني ممنوع تستخدم Node.js APIs زي الـ fs أو أي مكتبات تقيلة. خلي شغلك خفيف (Headers، Cookies، Redirects).
  • استخدم الـ Edge لعملية الـ A/B Testing: تقدر تقسم الترافيك بتاعك عند الـ Edge وتعمل Experiments من غير ما تلمس الـ Frontend code وتأثر على سرعة التحميل.
  • التكامل مع الـ Cache: الـ Edge Middleware بيقدر يعدل في الـ Cache-Control headers، وده بيساعدك تتحكم في الـ CDN بشكل أدق وأسرع.

خاتمة ونصيحة من أخ

يا صاحبي، تحسين الـ Core Web Vitals مش مجرد "تظبيط أرقام" عشان جوجل، ده تحسين لتجربة المستخدم اللي في الآخر هي اللي بتجيب الفلوس والـ Conversion. الـ Edge Middleware أداة جبارة لو استخدمتها صح، بس افتكر دايماً: "البساطة هي سر السرعة". ما تحاولش تعمل في الـ Middleware حاجات كان مفروض تتعمل في الـ Backend. اتعلم الـ Web Standards والـ HTTP Protocol كويس، لأنها دي اللغة اللي بيكلم بيها الـ Edge Middleware العالم.

ذاكر الـ Documentation الخاصة بـ Next.js بتركيز، وجرب تنقل منطق بسيط من الـ API Routes للـ Middleware، وهتلاحظ فرق مذهل في الـ Performance فوراً!


Share

Related posts

Jul 21, 2026 • 1 min read
Reading Count: 2
عنوان تلقائي

يا هلا بيك يا صديقي المبرمج في عالم تطوير الويب (Web Development). كام مرة لقيت نفسك بتكتب كود كتير...

Jul 21, 2026 • 1 min read
Reading Count: 6
تصميم الـ DTOs في لارافيل: إزاي تخلي كودك نظيف ومحمي من الفوضى؟

تصميم الـ DTOs في لارافيل: إزاي تخلي كودك نظيف ومحمي من الفوضى؟ أكيد مريت بالموقف ده: بتبدأ مشروع لا...

Jul 21, 2026 • 1 min read
Reading Count: 7
حل مشكلة رفع الملفات الكبيرة في لارافيل (Laravel) باستخدام تجزئة الملفات (Chunk Uploads)

حل مشكلة رفع الملفات الكبيرة في لارافيل (Laravel) باستخدام تجزئة الملفات (Chunk Uploads) يا مساء الف...