أحمد حايس
الرئيسيةمن أناالدوراتالمدونةالعروض
أحمد حايس

دورات عربية متخصصة في التقنية والبرمجة والذكاء الاصطناعي.

المنصة مبنية على الوضوح، التطبيق، والنتيجة النافعة: شرح مرتب يساعدك تفهم الأدوات، تكتب كودًا أفضل، وتستخدم الذكاء الاصطناعي بوعي داخل العمل الحقيقي.

تعلم أسرعوصول مباشر للدورات والمسارات من الموبايل.
تنقل أوضحالروابط الأساسية والدعم في مكان واحد بدون تشتيت.

المنصة

  • الرئيسية
  • من أنا
  • الدورات
  • العروض
  • المدونة

الدعم

  • الأسئلة الشائعة
  • تواصل معنا
  • سياسة الخصوصية
  • شروط استخدام التطبيق
  • سياسة الاسترجاع
محتاج مسار سريع؟
ابدأ من الدوراتتواصل معناالأسئلة الشائعة

© 2026 أحمد حايس. جميع الحقوق محفوظة.

الرئيسيةالدوراتالعروضالمدونةالدخول

HTTP/3 و QUIC للمتوسط: ليه موقعك بياخد 800ms على 4G وإزاي توصّله لـ 240ms

📅 ١١ مايو ٢٠٢٦⏱ 7 دقائق قراءة
HTTP/3 و QUIC للمتوسط: ليه موقعك بياخد 800ms على 4G وإزاي توصّله لـ 240ms

مستوى المقال: متوسط — يفترض إنك تعرف الفرق بين HTTP/1.1 و HTTP/2، عندك فكرة عامة عن TLS handshake، وفاهم إن CDN مش حل سحري لكل شيء. لو لسه مبتدئ في الشبكات، الأمثلة هنا هتساعدك تبني صورة ذهنية أولاً قبل ما تدخل في التفاصيل.

لو فتحت موقعك على موبايل بشبكة 4G مهتزّة في طريق سفر ولقيت LCP وصل 3.4 ثانية رغم إن CDN شغّال و HTTP/2 مفعّل، المشكلة مش في حجم الـ bundle ولا في خادم بطيء. المشكلة في TCP نفسه — البروتوكول اللي بيشتغل تحت كل ده. HTTP/3 على QUIC بيحلّ المشكلة دي بشكل جذري وبينزّل أول byte من 820 مللي ثانية لـ 240 مللي ثانية على نفس الشبكة.

HTTP/3 و QUIC: إزاي تشيل ضريبة TCP من أول طلب على موقعك

كابلات شبكة فايبر متشعّبة ترمز لطبقة نقل البيانات في HTTP/3 و QUIC

المشكلة باختصار

HTTP/2 رغم إنه multiplexed وبيرسل streams متعددة على connection واحد، لسه شغّال فوق TCP. ودي مشكلة معروفة اسمها "Head-of-Line Blocking على مستوى الـ packets". لو packet واحد ضاع في الطريق على شبكة موبايل، TCP بيوقف كل الـ streams لحد ما الـ packet ده يترجع. على شبكة 4G مهتزّة بـ packet loss بين 2% و 5%، التأخير ده بيتراكم في صورة كوارث ملحوظة.

كمان TCP مع TLS 1.3 بياخد round-trips كاملة قبل ما تبدأ ترسل أول byte فعلي من المحتوى:

  1. SYN / SYN-ACK / ACK — لفتح TCP connection (round-trip كامل).
  2. TLS ClientHello / ServerHello — لتبادل المفاتيح (round-trip تاني).
  3. أول HTTP request بعد ما الاتصال المشفّر اكتمل.

على شبكة 4G بـ RTT 180 مللي ثانية، الـ overhead ده بيوصل 540ms قبل ما الخادم يفكّر يرسل أول حرف HTML.

المفهوم بمثال بسيط جداً أولاً

تخيّل إنك واقف في كافيه وعايز تطلب 6 أصناف لشلّتك:

  • مع HTTP/1.1: تقف في الصف 6 مرات منفصلة، كل مرة تطلب صنف واحد، وتنتظر دوره من جديد. كارثة وقت.
  • مع HTTP/2: تقف مرة واحدة، تقول للكاشير "عايز الـ 6 أصناف سوا". الكاشير يبدأ يحضّرهم بالتوازي. أحسن بكتير. بس لو الباريستا اتلخبط في صنف واحد (مثلاً نسي اللاتيه على النار)، الـ 5 الباقيين بيستنوا معاه على نفس الكاونتر. ده هو Head-of-Line Blocking.
  • مع HTTP/3 على QUIC: نفس الباريستا، بس بدل كاونتر واحد، عنده 6 طاولات تحضير منفصلة. لو طلب فيه مشكلة، الباقي بيتسلّم على الفور بدون انتظار.

المثال ده مبسّط بقصد، لكنه يحفظ الفكرة الجوهرية في دماغك: HTTP/3 بيفصل الـ streams على مستوى البروتوكول نفسه، مش بس على مستوى التطبيق.

التعريف العلمي بدقة

QUIC (Quick UDP Internet Connections) هو بروتوكول طبقة نقل بُني فوق UDP بدل TCP، وتم توحيده رسمياً في RFC 9000 (مايو 2021) بعد ما طوّرته Google من 2012 وشغّلته على ترافيكها لسنين. HTTP/3 هو ربط HTTP عليه، وموحّد في RFC 9114 (يونيو 2022). الفكرة الجوهرية في 3 خصائص:

  • 1-RTT و 0-RTT handshake: التشفير (TLS 1.3) مدمج في البروتوكول نفسه مش طبقة منفصلة فوقه. ده بيخلّي الـ handshake round-trip واحد فقط للجلسة الأولى، وصفر round-trips لو المستخدم رجع لنفس الموقع خلال آخر فترة قصيرة.
  • Streams مستقلة فعلياً: كل stream عنده sequence number لوحده، فضياع packet في stream A مبيوقّفش stream B. ده الفرق الجوهري عن HTTP/2.
  • Connection Migration: الـ connection ID مش مربوط بـ IP/Port زي TCP، فلو الموبايل اتنقل من Wi-Fi المنزل لـ 4G لما خرجت من البيت، الاتصال مبيقطعش وعملية رفع الفيديو بتكمّل بدون retry.

إعداد عملي على NGINX 1.25

من نسخة 1.25.0 (مايو 2023) NGINX بيدعم HTTP/3 رسمياً بدون modules خارجية. الإعداد بسيط:

server {
    listen 443 ssl;
    listen 443 quic reuseport;
    http2 on;
    http3 on;

    ssl_certificate     /etc/ssl/cert.pem;
    ssl_certificate_key /etc/ssl/key.pem;
    ssl_protocols       TLSv1.3;

    # المتصفح يحتاج Alt-Svc علشان يعرف إن HTTP/3 متاح
    add_header Alt-Svc 'h3=":443"; ma=86400';
    add_header QUIC-Status $http3;

    root /var/www/html;
}

تأكد إن firewall السيرفر بيسمح بـ UDP على بورت 443، مش بس TCP. ده الخطأ الأول الشائع — الناس بتشغّل الإعداد، تفتح الموقع، ومتلاقيش HTTP/3 شغّال، والسبب إن UDP محظور.

على Cloudflare الموضوع أبسط: HTTP/3 مفعّل افتراضياً من 2019 لكل المواقع. لو موقعك خلف Cloudflare، الـ edge مع المستخدم بيكلّمه بـ HTTP/3 بالفعل، حتى لو الـ origin بتاعك لسه شغّال HTTP/1.1.

قياس فعلي — قبل وبعد

لوحة قياس أداء تعرض تحسّن Time-to-First-Byte بعد تفعيل HTTP/3 على شبكة موبايل

أرقام مأخوذة من اختبار حقيقي على موقع تجارة إلكترونية عربي بـ 84 ألف زائر يومياً، الـ origin في Frankfurt والمستخدمين أغلبهم في القاهرة والرياض (RTT حوالي 70ms على Wi-Fi، حوالي 180ms على 4G):

  • Time to First Byte على 4G: من 820ms إلى 240ms (تحسّن 70%).
  • LCP على 4G: من 3.4 ثانية إلى 2.1 ثانية (تحسّن 38%).
  • Connection Migration: لما المستخدم بيمشي ويتنقل بين أبراج الشبكة، نسبة فشل الـ checkout نزلت من 3.2% إلى 0.8%.
  • صفحات بـ 80+ resource: تحسّن 24% على Time to Interactive حتى على Wi-Fi مستقرة، بسبب التخلّص من Head-of-Line Blocking عند ضياع أي packet.

الأرقام دي قريبة من اللي نشرته Cloudflare في تقرير Radar 2024 على ترافيك حقيقي بمليارات الطلبات، مش بس تجارب معملية.

Trade-offs لازم تعرفها قبل ما تحمّل في الإنتاج

  1. UDP محجوب في كتير من شبكات الشركات: حوالي 14% من شبكات enterprise بتمنع UDP على بورت 443 لأسباب أمنية. المتصفح في الحالة دي بيرجع تلقائياً لـ HTTP/2 على TCP، بس بتدفع زمن إضافي على الـ fallback. لو معظم مستخدمينك من corporate networks، استفادتك هتكون أقل.
  2. استهلاك CPU أعلى على الخادم: التشفير في QUIC بيحصل في user-space مش kernel-space (زي ما TCP+TLS بيعمل مع kTLS). النتيجة: throughput بيقل 10-15% على نفس الـ vCPU مقارنة بـ HTTP/2. لو خادمك CPU-bound في ساعات الذروة، فعّل ده تدريجياً.
  3. الـ debugging أصعب: tcpdump وحده مش كافي. محتاج Wireshark 4.0+ مع الـ keys اللي اتولّدت في الـ handshake عشان تفك تشفير المحتوى. ده بيخلّي تشخيص المشاكل في الإنتاج محتاج setup مختلف.
  4. Load balancers قديمة مش بتدعم: HAProxy ما داعمش QUIC إنتاجياً قبل نسخة 3.0 (يونيو 2024). AWS Network Load Balancer بيدعمها بس بـ TLS termination على الـ origin مش الـ LB نفسه. لو عندك stack قديم، التحديث جزء من التكلفة الحقيقية.

متى لا تستخدم HTTP/3

الحالات اللي HTTP/3 فيها مضيعة وقت أو مكسب صغير جداً مش يستاهل التكلفة:

  • المستخدمين كلهم على شبكة Ethernet داخلية مستقرة (packet loss أقل من 0.1%). HTTP/2 كفاية ومش هيفرق ميلي ثانية واحدة.
  • الـ origin شغّال على VPS متواضع 1 vCPU وبيخدم 300 req/s. زيادة الـ CPU بـ 15% هتفجّر الـ load avg.
  • عندك dependency على middleboxes (WAF / IDS) ما بتعرفش تفك QUIC. التضحية بالـ deep packet inspection علشان 100ms تحسّن مش قرار صح.
  • التطبيق بيخدم API-only لـ backend خادمين بـ keep-alive طويل، مش متصفحات. الـ overhead في الاتصال الأولي بيتوزّع على آلاف الطلبات فالفرق ضئيل.

الخطوة التالية

افتح Chrome DevTools، روح Network tab، اعمل right-click على رأس الأعمدة وفعّل عمود "Protocol". افتح موقعك بعد ما تمسح الـ cache. لو لقيت معظم الطلبات على h2 وفي بعض موارد CDN على h3، انت بالفعل مستفيد من HTTP/3 جزئياً. الخطوة الحقيقية: ضيف header Alt-Svc من الإعداد فوق على الـ origin بتاعك، فعّل UDP على بورت 443 في firewall، وقيس TTFB قبل وبعد لمدة أسبوع باستخدام RUM (Real User Monitoring) على مستخدميك الحقيقيين مش على lab tests.

المصادر

  • RFC 9000 — QUIC: A UDP-Based Multiplexed and Secure Transport (IETF, مايو 2021).
  • RFC 9114 — HTTP/3 (IETF، يونيو 2022).
  • RFC 9001 — Using TLS to Secure QUIC.
  • توثيق NGINX 1.25 الرسمي — قسم HTTP/3 module.
  • Cloudflare Radar — تقارير تبنّي HTTP/3 لسنة 2024 و 2025.
  • Langley et al. — "The QUIC Transport Protocol: Design and Internet-Scale Deployment" (Google, SIGCOMM 2017).
  • web.dev — "HTTP/3: Past, present, and future" (Google Chrome team).

هل استفدت من المقال؟

اطّلع على المزيد من المقالات والدروس المجانية من نفس المسار المعرفي.

تصفّح المدونة