مقالات عملية مرتبة حسب المجال والمستوى، اختر المجال المناسب واقرأ من مستوى مبتدئ إلى محترف.
لو dashboard المبيعات بيحسب JOIN على 18 مليون صف كل ما المدير يفتح الصفحة، إنت بتدفع 4 دقائق انتظار + ضغط على الـ DB في كل زيارة. Materialized View بيحفظ نتيجة الاستعلام على القرص، فالـ dashboard بيرد في 30 مللي ثانية بدل 240 ثانية. مقال للمتوسط بمثال محل العصير للمبتدئ، تعريف علمي من توثيق PostgreSQL، كود قابل للنسخ على PostgreSQL 16، REFRESH CONCURRENTLY بدون قفل، أرقام مقاسة من إنتاج، 4 trade-offs حقيقية، ومتى لا تستخدمه أصلاً.
لو سيرفرك لسه شغّال على Gzip ومقتنع إنه أفضل ضغط ممكن، بتدفع 21% bandwidth زيادة من غير سبب. Brotli على نفس الـ JS bundle بينزّل الحجم من 142KB لـ 112KB بسطرين في NGINX. مقال للمستوى المتوسط بمثال شنطة السفر للمبتدئ، تعريف علمي من RFC 7932، إعداد NGINX 1.25 شغّال، أرقام مقاسة من Cloudflare على 100 ألف موقع، 4 trade-offs حقيقية، ومتى لا تستخدم Brotli أصلاً.
لو NGINX بتاعك لسه شغّال gzip بس، JavaScript bundle بحجم 1.1MB بيتحوّل لزائر مصري على 4G في 1.42 ثانية. Brotli بسطر تكوين بيخلّيه ينزل في 1.08 ثانية ويوفّر 110GB bandwidth شهريًا. مقال للمتوسط بمثال شنط السفر للمبتدئ، تعريف علمي من RFC 7932، إعداد NGINX 1.25 شغّال مع ngx_brotli، أرقام مقاسة على bundle React 2.8MB من زوار الخليج، 4 trade-offs حقيقية، ومتى Gzip لسه أنسب.
لو السيرفر فيه 64GB RAM والتطبيق بيرمي "too many connections" عند 100 connection، المشكلة مش في حجم الـ DB. كل connection في PostgreSQL بياكل 9-12 ميجا. PgBouncer بيخلّي 1000 طلب من التطبيق يمشوا على 25 connection فعلي، يوفّر 86% من ذاكرة DB، وينزّل P95 من 142ms لـ 38ms. مقال للمتوسط بمثال شبّاك التذاكر للمبتدئ، تعريف دقيق للـ process-per-connection، إعداد PgBouncer 1.22 شغّال، أرقام مقاسة من إنتاج، 4 trade-offs حقيقية، ومتى لا تستخدمه أصلاً.
لو PostgreSQL بتاعك بياكل 8GB RAM مع 200 connection فقط، المشكلة مش في حجم البيانات. كل connection بيفتح process كامل بيستهلك 10MB ذاكرة. pgbouncer بيخدم 1000 client متزامن بـ 50MB ذاكرة بدلاً من 10GB. مقال للمتوسط بمثال موظف البنك للمبتدئ، تعريف علمي لـ process-per-connection model من توثيق PostgreSQL، إعداد pgbouncer 1.22 شغّال، أرقام مقاسة على PostgreSQL 16، 4 trade-offs حقيقية، ومتى لا تستخدمه أصلاً.
صورة LCP candidate لو ما اتحطّش عليها fetchpriority=high بتنزل في الموجة الثانية مع باقي الصور غير المهمة. سطر HTML واحد بيخلّي LCP ينزل من 2.4 ثانية لـ 1.6 ثانية. مقال للمتوسط بمثال طابور الكاشير، تعريف علمي من HTML Living Standard، كود img و link rel=preload شغّال، أرقام مقاسة من Etsy وShopify، 4 trade-offs حقيقية، وحالات لا تستخدم فيها.
لو الـ login endpoint بيستقبل آلاف المحاولات بأسماء غير موجودة، انت بتحرق DB في حسابات بترجّع صفر. Bloom Filter في 50 سطر Python بيرفض المحاولات دي قبل ما توصل لـ DB، بـ 16KB ذاكرة لـ 100 ألف مستخدم. مقال للمتوسط بمثال بوّاب الفندق للمبتدئ، تعريف علمي من ورقة Bloom 1970، كود pybloom-live + Redis شغّال، أرقام مقاسة (P99 من 38ms لـ 22ms، CPU من 71% لـ 9%)، 4 trade-offs، ومتى لا تستخدمه أصلاً.
دليل عملي للمستوى المتوسط لتفعيل HTTP/3 و QUIC على NGINX 1.25 وقطع زمن التحميل بنسبة 35% على شبكات 4G ضعيفة. شرح Head-of-Line Blocking بمثال طابور الكاشير، تعريف علمي من RFC 9000 و RFC 9114، 6 خطوات قابلة للنسخ مع كود NGINX و sysctl، أرقام مقاسة من Cloudflare على 25 مليون طلب يومي، 4 trade-offs حقيقية، وحالات لا تستخدم HTTP/3 فيها مع المصادر الرسمية.
لو الـ endpoint عندك بيرجّع 200 منتج ووقت الاستجابة 4.2 ثانية مع إن الـ DB قوية، المشكلة مش في السيرفر. الـ ORM بيعمل query واحد للقائمة وبعدين 200 query تاني لجلب التصنيف لكل منتج. مقال للمستوى المتوسط بمثال محل البيتزا للمبتدئ، تعريف علمي دقيق، كود Django ORM شغّال، أرقام مقاسة من إنتاج، الفرق بين select_related و prefetch_related، trade-offs الـ JOIN، ومتى ما تركّزش على المشكلة دي.