خادم الويب

عملاء أجهزة الكمبيوتر الذين يتواصلون عبر الشبكة مع خادم ويب يقدم محتوى ثابتًا فقط
الجزء الداخلي والأمامي لخادم Dell PowerEdge ، وهو جهاز كمبيوتر مصمم ليتم تركيبه في بيئة تركيب الرفوف . غالبًا ما تُستخدم الخوادم المشابهة لهذا الخادم كخوادم ويب.
يمكن استخدام عدة خوادم ويب لموقع ويب ذي حركة مرور عالية.
مزرعة خوادم تضم آلاف خوادم الويب المستخدمة لمواقع الويب ذات حركة المرور العالية للغاية
مودم ADSL يعمل بخادم ويب مدمج يقدم صفحات ويب ديناميكية تُستخدم لتكوين المودم

خادم الويب هو برنامج حاسوبي يستقبل الطلبات عبر بروتوكول HTTP ( بروتوكول الشبكة المُصمم لتوزيع محتوى الويب ) أو نسخته الآمنة HTTPS . يبدأ برنامج المستخدم، وهو عادةً متصفح ويب أو برنامج زحف ويب ، عملية الاتصال عن طريق طلب صفحة ويب أو مورد آخر باستخدام HTTP، ويستجيب الخادم بمحتوى ذلك المورد أو برسالة خطأ . كما يمكن لخادم الويب استقبال وتخزين الموارد المُرسلة من برنامج المستخدم إذا تم تكوينه لذلك. [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ]

تختلف الأجهزة المستخدمة لتشغيل خادم الويب تبعًا لحجم الطلبات التي يحتاج إلى معالجتها. في أدنى مستويات هذا النطاق، نجد الأنظمة المدمجة ، مثل جهاز التوجيه الذي يشغل خادم ويب صغيرًا كواجهة تكوين له. أما موقع الإنترنت ذو حركة المرور العالية ، فقد يتعامل مع الطلبات باستخدام مئات الخوادم التي تعمل على رفوف من أجهزة الكمبيوتر عالية السرعة. [ 6 ]

يمكن أن يكون المورد المُرسَل من خادم الويب ملفًا موجودًا مسبقًا ( محتوى ثابت ) متاحًا للخادم، أو يمكن إنشاؤه عند وقت الطلب ( محتوى ديناميكي ) بواسطة برنامج آخر يتواصل مع برنامج الخادم. عادةً ما يُقدَّم النوع الأول بشكل أسرع ويمكن تخزينه مؤقتًا بسهولة أكبر للطلبات المتكررة، بينما يدعم النوع الثاني نطاقًا أوسع من التطبيقات.

لقد وسعت تقنيات مثل REST و SOAP ، التي تستخدم HTTP كأساس للاتصال العام بين أجهزة الكمبيوتر، بالإضافة إلى دعم امتدادات WebDAV ، نطاق استخدام خوادم الويب إلى ما هو أبعد من غرضها الأصلي المتمثل في خدمة الصفحات التي يمكن قراءتها من قبل البشر.

تاريخ

تم تقييم أول اقتراح على الإنترنت (1989) بأنه "غامض ولكنه مثير ..."
أول خادم ويب في العالم، محطة عمل NeXT Computer مزودة بمنفذ إيثرنت، عام 1990. وتقول الملصقة الموجودة على العلبة: "هذا الجهاز خادم. لا تقم بإيقاف تشغيله!!"

هذا تاريخ موجز للغاية لبرامج خوادم الويب ، لذا فإن بعض المعلومات تتداخل بالضرورة مع تاريخ متصفحات الويب والشبكة العنكبوتية العالمية والإنترنت ؛ لذلك، ولأغراض الوضوح والفهم، قد تكون بعض المعلومات التاريخية الرئيسية الواردة أدناه مشابهة لتلك الموجودة في واحدة أو أكثر من المقالات التاريخية المذكورة أعلاه. [ 7 ]

المشروع الأولي للشبكة العالمية (1989-1991)

في مارس 1989، اقترح السير تيم بيرنرز لي مشروعًا جديدًا على جهة عمله، سيرن ، بهدف تسهيل تبادل المعلومات بين العلماء باستخدام نظام النص التشعبي . حمل الاقتراح عنوان "النص التشعبي وسيرن" ، وطلب تقديم التعليقات عليه، وقرأه عدد من الأشخاص. في أكتوبر 1990، أُعيدت صياغة الاقتراح وإثراؤه (بمشاركة روبرت كايليو كمؤلف مشارك )، وأُقرّ أخيرًا. [ 8 ] [ 9 ] [ 10 ]

بين أواخر عام 1990 وأوائل عام 1991، أسفر المشروع عن قيام بيرنرز لي ومطوريه بكتابة واختبار العديد من مكتبات البرامج إلى جانب ثلاثة برامج، والتي تم تشغيلها في البداية على نظام التشغيل NeXTSTEP المثبت على محطات عمل NeXT : [ 11 ] [ 12 ] [ 10 ]

كانت تلك المتصفحات المبكرة تسترجع صفحات الويب المكتوبة بصيغة بسيطة مبكرة من لغة HTML من خوادم الويب باستخدام بروتوكول اتصال أساسي جديد يسمى HTTP 0.9 .

في أغسطس 1991، أعلن تيم بيرنرز لي عن ولادة تقنية شبكة الويب العالمية (WWW) وشجع العلماء على تبنيها وتطويرها. [ 13 ] بعد ذلك بوقت قصير، أُتيحت هذه البرامج، إلى جانب شفرتها المصدرية ، للأشخاص المهتمين باستخدامها. [ 11 ] على الرغم من أن الشفرة المصدرية لم تُرخص رسميًا أو تُنشر للعموم، إلا أن سيرن سمحت بشكل غير رسمي للمستخدمين والمطورين بالتجربة والتطوير عليها. بدأ بيرنرز لي بالترويج لتبني هذه البرامج واستخدامها، بالإضافة إلى نقلها إلى أنظمة تشغيل أخرى . [ 10 ]

تطور سريع وجنوني (1991-1995)

في ديسمبر 1991، تم تركيب أول خادم ويب خارج أوروبا في مركز SLAC (الولايات المتحدة الأمريكية). [ 12 ] كان هذا حدثًا بالغ الأهمية لأنه دشّن الاتصالات عبر القارات بين متصفحات الويب وخوادم الويب.

في الفترة من 1991 إلى 1993، استمر تطوير برنامج خادم الويب الخاص بـ CERN بنشاط من قبل مجموعة www، وفي الوقت نفسه، وبفضل توفر شفرة المصدر الخاصة به والمواصفات العامة لبروتوكول HTTP، بدأ تطوير العديد من تطبيقات خوادم الويب الأخرى.

في أبريل 1993، أصدر مركز سيرن بيانًا رسميًا عامًا يفيد بأن المكونات الثلاثة لبرمجيات الويب (عميل وضع السطر الأساسي، وخادم الويب، ومكتبة التعليمات البرمجية المشتركة)، بالإضافة إلى شفرتها المصدرية ، أصبحت متاحة للعموم . [ 14 ] وقد أعفى هذا البيان مطوري خوادم الويب من أي مشكلة قانونية محتملة تتعلق بتطوير أعمال مشتقة بناءً على تلك الشفرة المصدرية (وهو تهديد لم يكن موجودًا في الواقع).

في مطلع عام ١٩٩٤، كان أبرز خوادم الويب الجديدة خادم NCSA httpd ، الذي كان يعمل على أنظمة تشغيل متعددة مبنية على يونكس، وكان قادرًا على عرض محتوى مُولّد ديناميكيًا باستخدام POSTبروتوكول HTTP وتقنية CGI للتواصل مع البرامج الخارجية. وقد أبرزت هذه الإمكانيات، إلى جانب ميزات الوسائط المتعددة لمتصفح Mosaic الخاص بـ NCSA (القادر أيضًا على إدارة نماذج HTML لإرسال البيانات إلى خادم الويب)، إمكانات تقنية الويب في مجال النشر وتطبيقات الحوسبة الموزعة .

Number of active web sitesYear020,00040,00060,00080,000100,000199119931995Number of active web sitesNumber of active web sites (1991–1996)
عرض بيانات المصدر .
عدد المواقع الإلكترونية النشطة (1991-1996) [ 15 ] [ 16 ]

في النصف الثاني من عام ١٩٩٤، توقف تطوير خادم NCSA httpd لدرجة دفعت مجموعة من مطوري البرامج الخارجيين، ومديري المواقع الإلكترونية، وغيرهم من المتخصصين المهتمين بهذا الخادم، إلى كتابة وجمع التصحيحات بفضل توفر شفرة المصدر لخادم NCSA httpd للعموم. في بداية عام ١٩٩٥، طُبقت جميع هذه التصحيحات على آخر إصدار من شفرة مصدر NCSA، وبعد عدة اختبارات، انطلق مشروع خادم Apache HTTP . [ ١٧ ] [ ١٨ ]

في نهاية عام 1994، تم إطلاق خادم ويب تجاري جديد، يُدعى Netsite ، بميزات محددة. وكان هذا الخادم الأول من بين العديد من المنتجات المماثلة التي طورتها شركة Netscape أولاً ، ثم شركة Sun Microsystems ، وأخيراً شركة Oracle .

في منتصف عام 1995، أصدرت مايكروسوفت النسخة الأولى من IIS لنظام التشغيل ويندوز NT . وقد مثّل هذا دخول مطور وبائع تجاري إلى مجال تقنيات الويب، حيث لعب ولا يزال يلعب دورًا محوريًا على جانبي الويب (العميل والخادم).

في النصف الثاني من عام 1995، بدأت خوادم الويب الخاصة بـ CERN و NCSA في الانخفاض (في النسبة المئوية العالمية للاستخدام) بسبب التبني الواسع النطاق لخوادم الويب الجديدة التي كانت تتمتع بدورة تطوير أسرع بكثير إلى جانب المزيد من الميزات والمزيد من الإصلاحات المطبقة والمزيد من الأداء مقارنة بالخوادم السابقة.

النمو الهائل والمنافسة (1996-2014)

Number of active web sitesYear03,000,0006,000,0009,000,00012,000,00015,000,0001996199820002002Number of active web sitesNumber of active web sites (1996-2002)
عرض بيانات المصدر .
عدد المواقع الإلكترونية النشطة (1996-2002) [ 16 ] [ 19 ]
جهاز خادم الكمبيوتر Cobalt Qube 3 من شركة Sun (2002، تم إيقاف إنتاجه)

في نهاية عام 1996، كان هناك بالفعل أكثر من خمسين برنامجًا معروفًا ومختلفًا لخوادم الويب، متاحة لكل من يرغب في امتلاك اسم نطاق على الإنترنت أو استضافة مواقع ويب. [ 20 ] لم يدم الكثير منها طويلًا، وسرعان ما استُبدلت بخوادم ويب أخرى.

أجبر نشر وثائق RFC الخاصة بإصداري بروتوكول HTTP/1.0 (1996) وHTTP/1.1 (1997، 1999) معظم خوادم الويب على الامتثال (ليس دائمًا بشكل كامل) لهذه المعايير. وقد استلزم استخدام اتصالات TCP/IP المستمرة (HTTP/1.1) من خوادم الويب زيادة الحد الأقصى لعدد الاتصالات المتزامنة المسموح بها، وتحسين مستوى قابليتها للتوسع.

بين عامي 1996 و 1999، برزت Netscape Enterprise Server و IIS من Microsoft من بين الخيارات التجارية الرائدة، بينما احتل Apache HTTP Server الصدارة كخادم مفضل من بين البرامج المجانية والمفتوحة المصدر (بسبب موثوقيته وميزاته العديدة).

في تلك السنوات كان هناك أيضًا خادم ويب تجاري آخر يسمى زيوس ( تم إيقافه الآن ) والذي كان معروفًا بأنه أحد أسرع خوادم الويب وأكثرها قابلية للتوسع المتاحة في السوق، على الأقل حتى العقد الأول من القرن الحادي والعشرين، على الرغم من انخفاض نسبة استخدامه.

كان خادم Apache الأكثر استخدامًا بين خوادم الويب من منتصف عام 1996 وحتى نهاية عام 2015، إلى أن تفوق عليه خادم IIS في البداية، ثم خادم Nginx، بعد بضع سنوات من التراجع. بعد ذلك، انخفضت نسبة استخدام IIS إلى مستويات أقل بكثير من Apache (انظر أيضًا حصة السوق ).

في الفترة ما بين عامي 2005 و2006، بدأ أباتشي بتحسين سرعته وقابليته للتوسع من خلال تقديم ميزات أداء جديدة (مثل إدارة موارد الأحداث المتعددة وذاكرة التخزين المؤقت للمحتوى). [ 21 ] [ 22 ] ولأن هذه التحسينات الجديدة في الأداء كانت في البداية تجريبية، لم يفعّلها المستخدمون لفترة طويلة، ولذلك عانى أباتشي أكثر من منافسة الخوادم التجارية، وخاصةً خوادم المصادر المفتوحة الأخرى التي كانت قد حققت أداءً متفوقًا بكثير (خاصةً عند تقديم المحتوى الثابت) منذ بداية تطويرها، وكانت قادرةً في وقت تراجع أباتشي على تقديم قائمة طويلة من الميزات المتقدمة التي تم اختبارها جيدًا.

بعد بضع سنوات من بداية عام 2000، لم تظهر فقط خوادم الويب التجارية الأخرى والمنافسة للغاية (مثل LiteSpeed ) ولكن أيضًا العديد من البرامج مفتوحة المصدر الأخرى مثل Hiawatha و Cherokee HTTP server و Lighttpd و Nginx وغيرها من المنتجات المشتقة والمتعلقة بها والمتاحة أيضًا بدعم تجاري.

في الفترة ما بين عامي 2007 و2008، رفعت معظم متصفحات الويب الشائعة الحد الافتراضي السابق للاتصالات الدائمة لكل نطاق مضيف (وهو حد موصى به في RFC-2616) [ 23 ] إلى 4 أو 6 أو 8 اتصالات دائمة لكل نطاق مضيف، وذلك لتسريع استرجاع صفحات الويب ذات المحتوى الكبير من الصور، وللتخفيف من مشكلة نقص الاتصالات الدائمة المخصصة للكائنات الديناميكية المستخدمة في الإشعارات ثنائية الاتجاه للأحداث في صفحات الويب. [ 24 ] وفي غضون عام، أدت هذه التغييرات، في المتوسط، إلى زيادة عدد الاتصالات الدائمة التي يتعين على خوادم الويب إدارتها إلى ثلاثة أضعاف تقريبًا. وقد أعطى هذا التوجه (زيادة عدد الاتصالات الدائمة) دفعة قوية لاعتماد الخوادم الوكيلة العكسية أمام خوادم الويب الأبطأ، كما منح فرصة إضافية لخوادم الويب الجديدة الناشئة التي أظهرت سرعتها وقدرتها على التعامل مع أعداد كبيرة جدًا من الاتصالات المتزامنة دون الحاجة إلى موارد أجهزة ضخمة (أجهزة كمبيوتر باهظة الثمن مزودة بمعالجات مركزية وذاكرة وصول عشوائي وأقراص تخزين سريعة). [ 25 ]

تحديات جديدة (2015 وما بعدها)

في عام 2015، نشرت وثائق RFC الإصدار الجديد من البروتوكول [HTTP/2]، ونظرًا لأن تطبيق المواصفات الجديدة لم يكن بالأمر الهين، فقد نشأ معضلة بين مطوري خوادم الويب الأقل شيوعًا (على سبيل المثال، بنسبة استخدام أقل من 1% إلى 2%)، حول إضافة دعم لهذا الإصدار الجديد من البروتوكول من عدمه. [ 26 ] [ 27 ]

في الواقع، غالبًا ما تطلب دعم HTTP/2 تغييرات جذرية في تنفيذه الداخلي نظرًا للعديد من العوامل (الحاجة الدائمة تقريبًا إلى اتصالات مشفرة، والقدرة على التمييز بين اتصالات HTTP/1.x وHTTP/2 على نفس منفذ TCP، والتمثيل الثنائي لرسائل HTTP، وأولوية الرسائل، وضغط رؤوس HTTP، واستخدام التدفقات المعروفة أيضًا باسم اتصالات TCP/IP الفرعية والتحكم في التدفق ذي الصلة، وما إلى ذلك)، ولذلك اختار عدد قليل من مطوري خوادم الويب هذه عدم دعم إصدار HTTP/2 الجديد (على الأقل في المستقبل القريب) أيضًا لهذه الأسباب الرئيسية: [ 26 ] [ 27 ]

  • كان من الممكن أن تدعم المتصفحات بروتوكولات HTTP/1.x لفترة طويلة جدًا (ربما إلى الأبد) بحيث لا يكون هناك عدم توافق بين العملاء والخوادم في المستقبل القريب؛
  • كان يُنظر إلى تطبيق بروتوكول HTTP/2 على أنه مهمة بالغة التعقيد يمكن أن تفتح الباب أمام فئة جديدة تمامًا من الأخطاء التي لم تكن موجودة حتى عام 2015، وبالتالي كان سيتطلب الأمر استثمارات كبيرة في تطوير واختبار تنفيذ البروتوكول الجديد؛
  • يمكن دائمًا إضافة دعم HTTP/2 في المستقبل إذا كانت الجهود مبررة.

بدلاً من ذلك، سارع مطورو معظم خوادم الويب الشائعة إلى توفير البروتوكول الجديد ، ليس فقط لتوافر القوى العاملة والوقت لديهم، بل أيضاً لأن تطبيقهم السابق لبروتوكول SPDY كان قابلاً لإعادة الاستخدام كنقطة انطلاق، ولأن معظم متصفحات الويب الشائعة طبقته بسرعة كبيرة لنفس السبب. ومن الأسباب الأخرى التي دفعت هؤلاء المطورين إلى التحرك بسرعة، شعور مديري المواقع الإلكترونية بضغط حركة المرور المتزايدة باستمرار ، ورغبتهم الشديدة في تثبيت وتجربة أي شيء - في أسرع وقت ممكن - من شأنه أن يقلل بشكل كبير من عدد اتصالات TCP/IP ويسرع الوصول إلى المواقع المستضافة. [ 28 ]

في الفترة 2020-2021، تم تكرار ديناميكيات HTTP/2 المتعلقة بتنفيذها (من قبل أفضل خوادم الويب ومتصفحات الويب الشائعة) جزئيًا بعد نشر مسودات متقدمة من RFC المستقبلية حول بروتوكول HTTP/3 .

نظرة عامة فنية

عملاء الكمبيوتر المتصلون بخادم الويب عبر الإنترنت

ينبغي اعتبار النظرة العامة التقنية التالية مجرد محاولة لتقديم بعض الأمثلة المحدودة للغاية حول بعض الميزات التي يمكن تنفيذها في خادم الويب وبعض المهام التي يمكن أن يؤديها من أجل الحصول على سيناريو واسع بما فيه الكفاية حول الموضوع.

يلعب برنامج خادم الويب دور الخادم في نموذج العميل والخادم من خلال تنفيذ إصدار واحد أو أكثر من بروتوكول HTTP، وغالبًا ما يتضمن الإصدار الآمن HTTPS وميزات وامتدادات أخرى تعتبر مفيدة لاستخدامه المخطط له.

قد يختلف تعقيد وكفاءة برنامج خادم الويب بشكل كبير اعتمادًا على: [ 1 ]

السمات المشتركة

على الرغم من اختلاف برامج خادم الويب في طريقة تنفيذها، إلا أن معظمها يقدم الميزات المشتركة التالية.

هذه ميزات أساسية تتوافر عادةً في معظم خوادم الويب.

  • تقديم المحتوى الثابت : القدرة على تقديم المحتوى الثابت (ملفات الويب) للعملاء عبر بروتوكول HTTP.
  • HTTP : دعم إصدار واحد أو أكثر من بروتوكول HTTP من أجل إرسال إصدارات من استجابات HTTP متوافقة مع إصدارات طلبات HTTP الخاصة بالعميل (على سبيل المثال، HTTP/1.0، HTTP/1.1، HTTP/2 ، HTTP/3 ).
  • التسجيل : عادة ما تمتلك خوادم الويب أيضًا القدرة على تسجيل بعض المعلومات، حول طلبات العميل واستجابات الخادم، لملفات السجل لأغراض أمنية وإحصائية.

بعض الميزات الأخرى الأكثر تقدماً وشعبية ( وهي مجرد مجموعة صغيرة جداً ) هي كالتالي.

المهام الشائعة

يقوم برنامج خادم الويب، عند تشغيله، عادةً بتنفيذ عدة مهام عامة : [ 1 ]

  • يبدأ التشغيل، ويقرأ ويطبق اختيارياً الإعدادات الموجودة في ملفات التكوين الخاصة به أو في أي مكان آخر، ويفتح ملف السجل اختيارياً، ويبدأ الاستماع إلى اتصالات العميل وطلباته؛
  • يحاول اختيارياً تكييف سلوكه العام وفقاً لإعداداته وظروف التشغيل الحالية ؛
  • يدير اتصالات العملاء (قبول اتصالات جديدة أو إغلاق الاتصالات الحالية حسب الحاجة)؛
  • يستقبل طلبات العميل (عن طريق قراءة رسائل HTTP):
  • ينفذ أو يرفض طريقة HTTP المطلوبة:
  • الرد على طلبات العميل بإرسال استجابات HTTP مناسبة (مثل الموارد المطلوبة أو رسائل الخطأ) والتحقق في النهاية من رؤوس HTTP أو إضافتها إلى تلك التي ترسلها البرامج والوحدات النمطية الديناميكية؛
  • يقوم بشكل اختياري بتسجيل (جزئيًا أو كليًا) طلبات العميل أو استجاباته في ملف سجل المستخدم الخارجي أو في ملف سجل النظام بواسطة syslog ، وعادة ما يستخدم تنسيق سجل شائع ؛
  • يقوم النظام بشكل اختياري بتسجيل رسائل العمليات حول الحالات الشاذة المكتشفة أو الأحداث البارزة الأخرى (على سبيل المثال، في طلبات العميل أو في أدائه الداخلي) باستخدام syslog أو بعض مرافق النظام الأخرى؛ عادةً ما تحتوي رسائل السجل هذه على مستوى تصحيح الأخطاء أو التحذير أو الخطأ أو التنبيه والذي يمكن تصفيته (عدم تسجيله) اعتمادًا على بعض الإعدادات، انظر أيضًا مستوى الخطورة ؛
  • يقوم البرنامج اختيارياً بإنشاء إحصائيات حول حركة مرور الويب التي تتم إدارتها أو أدائها؛
  • مهام مخصصة أخرى.

اقرأ رسالة الطلب

برامج خادم الويب قادرة على: [ 29 ] [ 30 ] [ 31 ]

  • لقراءة رسالة طلب HTTP؛
  • لتفسيره؛
  • للتحقق من صحة تركيبها النحوي؛
  • لتحديد رؤوس HTTP المعروفة واستخراج قيمها منها.

بعد فك تشفير رسالة طلب HTTP والتحقق منها، يمكن استخدام قيمها لتحديد ما إذا كان بالإمكان تلبية هذا الطلب أم لا. ويتطلب ذلك العديد من الخطوات الأخرى، بما في ذلك عمليات التحقق الأمني .

توحيد عناوين URL

عادةً ما تقوم برامج خادم الويب بتنفيذ نوع من أنواع توحيد عناوين URL ( عناوين URL الموجودة في معظم رسائل طلب HTTP) من أجل:

  • اجعل مسار الموارد دائمًا مسارًا موحدًا ونظيفًا من الدليل الجذر للموقع الإلكتروني؛
  • تقليل المخاطر الأمنية (على سبيل المثال، من خلال اعتراض محاولات الوصول إلى الموارد الثابتة خارج الدليل الجذر للموقع الإلكتروني أو الوصول إلى أجزاء من المسار أسفل الدليل الجذر للموقع الإلكتروني المحظورة أو التي تتطلب ترخيصًا)؛
  • جعل مسار موارد الويب أكثر قابلية للتمييز من قبل البشر وبرامج تحليل سجلات الويب (المعروفة أيضًا باسم محللات السجلات أو التطبيقات الإحصائية).

يشير مصطلح توحيد عناوين URL إلى عملية تعديل وتوحيد عنوان URL بطريقة متسقة. توجد عدة أنواع من التوحيد، منها تحويل اسم النطاق واسم المضيف إلى أحرف صغيرة. ومن أهم عمليات التوحيد إزالة أجزاء المسار التي تنتهي بـ "." و ".." وإضافة شرطات مائلة في نهاية أي جزء من المسار غير فارغ.

تعيين عنوان URL

تُعرف عملية ربط عناوين URL بأنها العملية التي يحدد من خلالها خادم الويب أو إطار عمل التطبيق كيفية توجيه طلب عنوان URL الوارد إلى المورد أو المعالج أو الإجراء المناسب. تحلل آليات ربط عناوين URL الحديثة بنية عنوان URL المطلوب، وتستخدم قواعد التوجيه أو أنماط التكوين لتوفير الموارد الثابتة، أو استدعاء المعالجات الديناميكية، أو إجراء عمليات إعادة الكتابة وإعادة التوجيه دون الاعتماد مباشرةً على مسارات نظام الملفات. يتيح هذا النهج عناوين URL واضحة وسهلة القراءة، وهياكل تطبيقات مرنة. [ 32 ]

من الناحية العملية، يتعين على برامج خادم الويب التي تُنفذ ميزات متقدمة، تتجاوز مجرد تقديم المحتوى الثابت (مثل محرك إعادة كتابة عناوين URL، وتقديم المحتوى الديناميكي)، أن تكتشف كيفية التعامل مع عنوان URL هذا على النحو التالي:

  • إعادة توجيه عنوان URL ، أي إعادة التوجيه إلى عنوان URL آخر؛
  • طلب ثابت لمحتوى الملف ؛
  • طلب ديناميكي لـ:
    • قائمة الملفات أو الدلائل الفرعية الأخرى الموجودة في ذلك الدليل؛
    • أنواع أخرى من الطلبات الديناميكية من أجل تحديد معالج البرنامج أو الوحدة القادر على التعامل مع هذا النوع من مسار عنوان URL وتمرير أجزاء أخرى من عنوان URL إليه (أي عادةً معلومات المسار ومتغيرات سلسلة الاستعلام ).

قد يحدد ملف تكوين واحد أو أكثر لخادم الويب ربط أجزاء من مسار عنوان URL (مثل الأجزاء الأولية من مسار الملف ، وامتداد اسم الملف، ومكونات المسار الأخرى) بمعالج عنوان URL محدد (ملف، أو دليل، أو برنامج خارجي، أو وحدة داخلية). [ 33 ]

عندما يقوم خادم الويب بتنفيذ ميزة أو أكثر من الميزات المتقدمة المذكورة أعلاه، فإن جزء المسار من عنوان URL صالح قد لا يتطابق دائمًا مع مسار نظام الملفات الموجود ضمن شجرة دليل موقع الويب (ملف أو دليل في نظام الملفات ) لأنه يمكن أن يشير إلى اسم افتراضي لمعالج وحدة داخلية أو خارجية للطلبات الديناميكية.

ترجمة مسار عنوان URL إلى أنظمة الملفات

تستطيع برامج خادم الويب ترجمة مسار عنوان URL (كلياً أو جزئياً)، الذي يشير إلى مسار نظام ملفات فعلي، إلى مسار مطلق ضمن الدليل الجذر للموقع الإلكتروني المستهدف. [ 33 ]

Website's root directory may be specified by a configuration file or by some internal rule of the web server by using the name of the website which is the host part of the URL found in HTTP client request.[33]

Path translation to file system is done for the following types of web resources:

  • a local, usually non-executable, file (static request for file content);
  • a local directory (dynamic request: directory listing generated on the fly);
  • a program name (dynamic requests that is executed using CGI or SCGI interface and whose output is read by web server and resent to client who made the HTTP request).

The web server appends the path found in requested URL (HTTP request message) and appends it to the path of the (Host) website root directory. On an Apache server, this is commonly /home/www/website (on Unix machines, usually it is: /var/www/website). See the following examples of how it may result.

URL path translation for a static file request

Example of a static request of an existing file specified by the following URL:

http://www.example.com/path/file.html

The client's user agent connects to www.example.com and then sends the following HTTP/1.1 request:

GET /path/file.html HTTP/1.1 Host: www.example.com Connection: keep-alive

The result is the local file system resource:

/home/www/www.example.com/path/file.html

The web server then reads the file, if it exists, and sends a response to the client's web browser. The response will describe the content of the file and contain the file itself or an error message will return saying that the file does not exist or its access is forbidden.

URL path translation for a directory request (without a static index file)

Example of an implicit dynamic request of an existing directory specified by the following URL:

http://www.example.com/directory1/directory2/

The client's user agent connects to www.example.com and then sends the following HTTP/1.1 request:

GET /directory1/directory2 HTTP/1.1 Host: www.example.com Connection: keep-alive

The result is the local directory path:

/home/www/www.example.com/directory1/directory2/

The web server then verifies the existence of the directory and if it exists and it can be accessed then tries to find out an index file (which in this case does not exist) and so it passes the request to an internal module or a program dedicated to directory listings and finally reads data output and sends a response to the client's web browser. The response will describe the content of the directory (list of contained subdirectories and files) or an error message will return saying that the directory does not exist or its access is forbidden.

URL path translation for a dynamic program request

بالنسبة للطلب الديناميكي، يجب أن يشير مسار عنوان URL الذي يحدده العميل إلى برنامج خارجي موجود (عادةً ما يكون ملفًا تنفيذيًا يحتوي على CGI) يستخدمه خادم الويب لإنشاء محتوى ديناميكي. [ 34 ]

مثال على طلب ديناميكي يستخدم ملف برنامج لإنشاء مخرجات:

http://www.example.com/cgi-bin/forum.php?action=view&orderby=thread&date=2021-10-15

يتصل وكيل المستخدم الخاص بالعميل www.example.comثم يرسل طلب HTTP /1.1 التالي:

طلب GET إلى /cgi-bin/forum.php?action=view&ordeby=thread&date=2021-10-15 HTTP/1.1 Host: www.example.com Connection: keep-alive

والنتيجة هي مسار الملف المحلي للبرنامج (في هذا المثال، برنامج PHP ):

/home/www/www.example.com/cgi-bin/forum.php

يقوم خادم الويب بتنفيذ البرنامج، مُمررًا إليه مسار الملف وسلسلة الاستعلامaction=view&orderby=thread&date=2021-10-15 ، ليحصل البرنامج على المعلومات اللازمة لتشغيله. (في هذه الحالة، سيعيد البرنامج مستند HTML يحتوي على عرض لمشاركات المنتدى مرتبة حسب الموضوع بدءًا من 15 أكتوبر 2021). إضافةً إلى ذلك، يقرأ خادم الويب البيانات المُرسلة من البرنامج الخارجي، ثم يُعيد إرسالها إلى العميل الذي أرسل الطلب.

إدارة رسائل الطلب

بمجرد قراءة الطلب وتفسيره والتحقق منه، يجب إدارته بناءً على طريقته وعنوان URL الخاص به ومعلماته، والتي قد تتضمن قيم رؤوس HTTP.

من الناحية العملية، يتعين على خادم الويب معالجة الطلب باستخدام أحد مسارات الاستجابة التالية: [ 33 ]

  • إذا كان هناك شيء غير مقبول في الطلب (في سطر الحالة أو رؤوس الرسائل)، فإن خادم الويب قد أرسل بالفعل استجابة خطأ؛
  • إذا كان للطلب طريقة (على سبيل المثال، OPTIONS) يمكن تلبيتها بواسطة الكود العام لخادم الويب، فسيتم إرسال استجابة ناجحة؛
  • إذا كان عنوان URL يتطلب تفويضًا، فسيتم إرسال رسالة خطأ في التفويض ؛
  • إذا كان عنوان URL يشير إلى إعادة توجيه، فسيتم إرسال رسالة إعادة التوجيه ؛
  • إذا كان عنوان URL يشير إلى مورد ديناميكي (مسار افتراضي أو قائمة دليل) فسيتم استدعاء معالجه (وحدة داخلية أو برنامج خارجي) وسيتم تمرير معلمات الطلب (سلسلة الاستعلام ومعلومات المسار) إليه للسماح له بالرد على هذا الطلب؛
  • إذا كان عنوان URL يشير إلى مورد ثابت (عادةً ما يكون ملفًا على نظام الملفات)، فسيتم استدعاء المعالج الثابت الداخلي لإرسال هذا الملف؛
  • إذا لم تكن طريقة الطلب معروفة أو إذا كان هناك أي شرط غير مقبول آخر (مثل عدم العثور على المورد، خطأ في الخادم الداخلي، وما إلى ذلك) فسيتم إرسال استجابة خطأ .

عرض محتوى ثابت

عملاء أجهزة الكمبيوتر الذين يتواصلون عبر الشبكة مع خادم ويب يقدم محتوى ثابتًا فقط

إذا كان برنامج خادم الويب قادرًا على تقديم محتوى ثابت وتمت تهيئته للقيام بذلك، فإنه يستطيع إرسال محتوى الملف عندما تحتوي رسالة الطلب على مسار URL صالح يطابق (بعد تعيين عنوان URL وترجمته وإعادة توجيهه) مسار ملف موجود ضمن الدليل الجذر لموقع الويب، ويكون للملف سمات تتطابق مع تلك المطلوبة وفقًا للقواعد الداخلية لبرنامج خادم الويب. [ 33 ]

يُطلق على هذا النوع من المحتوى اسم المحتوى الثابت لأنه عادةً لا يتم تغييره بواسطة خادم الويب عند إرساله إلى العملاء ولأنه يظل كما هو حتى يتم تعديله (تعديل الملف) بواسطة برنامج ما.

ملاحظة: عند تقديم محتوى ثابت فقط ، لا يقوم برنامج خادم الويب عادةً بتغيير محتويات ملفات مواقع الويب التي يتم تقديمها (لأنها تُقرأ فقط ولا تُكتب أبدًا)، وبالتالي يكفي دعم طرق HTTP التالية فقط :

  • OPTIONS
  • HEAD
  • GET

يمكن تسريع استجابة محتوى الملفات الثابتة عن طريق ذاكرة التخزين المؤقت للملفات .

ملفات فهرس الدليل

إذا تلقى برنامج خادم الويب رسالة طلب من العميل تحتوي على عنوان URL يتطابق مساره مع أحد مسارات دليل موجود ، وكان هذا الدليل قابلاً للوصول إليه، وتم تمكين خدمة ملفات فهرس الدليل، فقد يحاول برنامج خادم الويب خدمة أول اسم ملف فهرس ثابت معروف (أو مُكوَّن) ( ملف عادي ) موجود في ذلك الدليل؛ إذا لم يتم العثور على ملف فهرس أو لم يتم استيفاء الشروط الأخرى، فسيتم إرجاع رسالة خطأ.

أكثر الأسماء استخدامًا لملفات الفهرس الثابتة هي: index.html، index.htmو Default.htm.

الملفات العادية

إذا تلقى برنامج خادم الويب رسالة طلب من العميل تحتوي على عنوان URL يتطابق مساره مع اسم ملف موجود، وكان هذا الملف قابلاً للوصول إليه بواسطة برنامج خادم الويب، وكانت سماته تتطابق مع القواعد الداخلية لبرنامج خادم الويب، فيمكن لبرنامج خادم الويب إرسال هذا الملف إلى العميل.

عادةً، ولأسباب أمنية، تُهيأ معظم برامج خوادم الويب مسبقًا لخدمة الملفات العادية فقط أو لتجنب استخدام أنواع الملفات الخاصة مثل ملفات الأجهزة ، بالإضافة إلى الروابط الرمزية أو الروابط الصلبة إليها. والهدف من ذلك هو تجنب الآثار الجانبية غير المرغوب فيها عند خدمة موارد الويب الثابتة. [ 35 ]

عرض محتوى ديناميكي

عملاء أجهزة الكمبيوتر الذين يتواصلون عبر الشبكة مع خادم ويب يقدم محتوى ثابتًا وديناميكيًا

إذا كان برنامج خادم الويب قادرًا على عرض محتوى ديناميكي ، وتمت تهيئته لذلك، فإنه يستطيع التواصل مع الوحدة الداخلية المناسبة أو البرنامج الخارجي (المرتبط بمسار عنوان URL المطلوب) لتمرير معلمات طلب العميل إليه. بعد ذلك، يقرأ برنامج خادم الويب استجابة البيانات (التي أنشأها، غالبًا بشكل فوري) ثم يعيد إرسالها إلى برنامج العميل الذي أرسل الطلب. [ 36 ]

ملاحظة: عند تقديم محتوى ثابت وديناميكي ، يجب أن يدعم برنامج خادم الويب عادةً طريقة HTTP التالية أيضًا لكي يتمكن من استقبال البيانات من العملاء بأمان، وبالتالي لكي يتمكن من استضافة مواقع الويب التي تحتوي على نماذج تفاعلية قد ترسل مجموعات بيانات كبيرة (مثل إدخال الكثير من البيانات أو تحميل الملفات ) إلى خادم الويب أو البرامج أو الوحدات الخارجية:

  • POST

لكي يتمكن برنامج خادم الويب من التواصل مع وحداته الداخلية أو البرامج الخارجية، يجب أن يكون قد نفذ واحدة أو أكثر من واجهات البوابة المتاحة العديدة (انظر أيضًا واجهات بوابة خادم الويب المستخدمة للمحتوى الديناميكي ).

الواجهات الثلاث القياسية والتاريخية للبوابات هي كالتالي.

الصور المولدة بالحاسوب
يتم تشغيل برنامج CGI خارجي بواسطة برنامج خادم الويب لكل طلب ديناميكي، ثم يقرأ برنامج خادم الويب استجابة البيانات التي تم إنشاؤها ثم يعيد إرسالها إلى العميل.
SCGI
يتم تشغيل برنامج SCGI خارجي (عادة ما يكون عملية) مرة واحدة بواسطة برنامج خادم الويب أو بواسطة برنامج أو عملية أخرى، ثم ينتظر اتصالات الشبكة؛ في كل مرة يكون هناك طلب جديد له، يقوم برنامج خادم الويب بإنشاء اتصال شبكة جديد به من أجل إرسال معلمات الطلب وقراءة استجابة البيانات الخاصة به، ثم يتم إغلاق اتصال الشبكة.
فاست سي جي آي
يتم تشغيل برنامج FastCGI خارجي (عادة ما يكون عملية) مرة واحدة بواسطة برنامج خادم الويب أو بواسطة برنامج أو عملية أخرى، ثم ينتظر اتصالاً بالشبكة يتم إنشاؤه بشكل دائم بواسطة خادم الويب؛ ومن خلال هذا الاتصال يتم إرسال معلمات الطلب وقراءة استجابات البيانات.
قوائم الدليل
قائمة الدليل التي يتم إنشاؤها ديناميكيًا بواسطة خادم الويب

قد يكون برنامج خادم الويب قادراً على إدارة الإنشاء الديناميكي (أثناء التشغيل) لقائمة فهرس الدليل للملفات والأدلة الفرعية. [ 37 ]

إذا تم تكوين برنامج خادم الويب للقيام بذلك، وكان مسار عنوان URL المطلوب مطابقًا لدليل موجود ومسموح بالوصول إليه، ولم يتم العثور على ملف فهرس ثابت ضمن ذلك الدليل، فسيتم إنشاء صفحة ويب (عادةً بتنسيق HTML) تحتوي على قائمة الملفات أو الأدلة الفرعية للدليل المذكور أعلاه، بشكل ديناميكي (أثناء التنفيذ). في حال تعذر إنشاء الصفحة، يتم إرجاع خطأ.

Some web server programs allow the customization of directory listings by allowing the usage of a web page template—an HTML document containing placeholders, (e.g., $(FILE_NAME), $(FILE_SIZE), etc.) that are replaced with the field values of each file entry found in directory by web server (e.g., index.tpl) or the usage of HTML and embedded source code that is interpreted and executed (e.g.,, index.asp) or by supporting the usage of dynamic index programs such as CGIs, SCGIs, FCGIs (e.g., index.cgi, index.php, index.fcgi).

Usage of dynamically generated directory listings is usually avoided or limited to a few selected directories of a website because that generation takes much more OS resources than sending a static index page.

The main usage of directory listings is to allow the download of files (usually when their names, sizes, modification date-times or file attributes may change randomly and frequently) as they are, without requiring to provide further information to requesting user.[38]

Program or module processing

An external program or an internal module (processing unit) can execute some sort of application function that may be used to get data from or to store data to one or more data repositories:

  • files (file system);
  • databases (DBs);
  • other sources located in local computer or in other computers.

A processing unit can return any kind of web content, also by using data retrieved from a data repository:

In practice whenever there is content that may vary, depending on one or more parameters contained in client request or in configuration settings, then, usually, it is generated dynamically.

Send response message

Web server programs are able to send response messages as replies to client request messages.[29]

An error response message may be sent because a request message could not be successfully read or decoded or analyzed or executed.[30]

NOTE: the following sections are reported only as examples to help to understand what a web server, more or less, does; these sections are by any means neither exhaustive nor complete.

Error message

A web server program may reply to a client request message with many kinds of error messages, anyway these errors are divided mainly in two categories:

عندما يتلقى متصفح العميل استجابة أو رسالة خطأ، فإذا كانت مرتبطة بطلب المستخدم الرئيسي (على سبيل المثال، عنوان URL لمورد ويب مثل صفحة ويب)، فعادةً ما يتم عرض رسالة الخطأ هذه في نافذة أو رسالة متصفح ما.

تفويض عنوان URL

قد يكون برنامج خادم الويب قادرًا على التحقق مما إذا كان مسار عنوان URL المطلوب صحيحًا: [ 41 ]

  • يمكن للجميع الوصول إليه بحرية؛
  • يتطلب مصادقة المستخدم (طلب بيانات اعتماد المستخدم مثل اسم المستخدم وكلمة المرور
  • يُحظر الوصول على بعض أو جميع أنواع المستخدمين.

إذا تم تنفيذ ميزة التفويض أو حقوق الوصول وتفعيلها ولم يتم منح الوصول إلى مورد الويب، فعندئذٍ، اعتمادًا على حقوق الوصول المطلوبة، يقوم برنامج خادم الويب بما يلي:

  • يمكن رفض الوصول عن طريق إرسال رسالة خطأ محددة (على سبيل المثال، الوصول ممنوع
  • قد يتم رفض الوصول عن طريق إرسال رسالة خطأ محددة (على سبيل المثال، الوصول غير مصرح به ) والتي عادة ما تجبر متصفح العميل على مطالبة المستخدم البشري بتقديم بيانات اعتماد المستخدم المطلوبة؛ إذا تم تقديم بيانات اعتماد المصادقة، فإن برنامج خادم الويب يتحقق منها ويقبلها أو يرفضها.

إعادة توجيه عنوان URL

قد يمتلك برنامج خادم الويب القدرة على إعادة توجيه عناوين URL إلى عناوين URL جديدة (مواقع جديدة)، وذلك عن طريق الرد على رسالة طلب العميل برسالة استجابة تحتوي على عنوان URL جديد مناسب للوصول إلى مورد ويب صالح أو موجود (يجب على العميل إعادة إرسال الطلب باستخدام عنوان URL الجديد). [ 42 ]

يتم استخدام إعادة توجيه عنوان URL للموقع: [ 42 ]

  • لتصحيح اسم الدليل بإضافة شرطة مائلة نهائية '/'؛ [ 37 ]
  • لإعطاء عنوان URL جديد لمسار URL لم يعد موجودًا إلى مسار جديد حيث يمكن العثور على هذا النوع من موارد الويب.
  • لإعطاء عنوان URL جديد لنطاق آخر عندما يكون النطاق الحالي مثقلاً للغاية.

مثال 1: يشير مسار عنوان URL إلى اسم دليل ولكنه لا يحتوي على شرطة مائلة نهائية '/'، لذلك يرسل خادم الويب إعادة توجيه إلى العميل لإرشاده لإعادة الطلب باستخدام اسم المسار الثابت. [ 37 ]

من: إلى:   /directory1/directory2  /directory1/directory2/

المثال الثاني: تم نقل مجموعة كاملة من المستندات داخل موقع الويب من أجل إعادة تنظيم مسارات نظام الملفات الخاصة بها.

من: إلى:   /directory1/directory2/2021-10-08/  /directory1/directory2/2021/10/08/

المثال 3: تم نقل مجموعة كاملة من المستندات إلى موقع ويب جديد ، والآن أصبح من الضروري استخدام اتصالات HTTPS الآمنة للوصول إليها.

من: إلى:   http://www.example.com/directory1/directory2/2021-10-08/  https://docs.example.com/directory1/2021-10-08/

الأمثلة المذكورة أعلاه ليست سوى عدد قليل من أنواع عمليات إعادة التوجيه الممكنة.

رسائل ناجحة

يستطيع برنامج خادم الويب الرد على رسالة طلب عميل صحيحة برسالة نجاح، والتي قد تحتوي اختيارياً على بيانات موارد الويب المطلوبة . [ 43 ]

إذا تم إرسال بيانات موارد الويب مرة أخرى إلى العميل، فيمكن أن تكون محتوى ثابتًا أو محتوى ديناميكيًا اعتمادًا على كيفية استردادها (من ملف أو من مخرجات برنامج أو وحدة نمطية).

ذاكرة التخزين المؤقت للمحتوى

بهدف تسريع استجابات خادم الويب عن طريق تقليل متوسط ​​أوقات استجابة HTTP والموارد المادية المستخدمة، تقوم العديد من خوادم الويب الشائعة بتطبيق ذاكرة تخزين مؤقتة واحدة أو أكثر للمحتوى ، كل منها متخصص في فئة محتوى معينة. [ 44 ] [ 45 ]

عادةً ما يتم تخزين المحتوى مؤقتًا حسب مصدره:

ذاكرة التخزين المؤقت للملفات

تاريخياً، تم تخزين المحتويات الثابتة الموجودة في الملفات والتي كان يجب الوصول إليها بشكل متكرر وعشوائي وسريع، في الغالب على الأقراص الكهروميكانيكية منذ منتصف إلى أواخر الستينيات والسبعينيات؛ وللأسف، لطالما اعتُبرت عمليات القراءة والكتابة من وإلى هذا النوع من الأجهزة عمليات بطيئة للغاية مقارنة بسرعة ذاكرة الوصول العشوائي ، ولذلك، منذ أنظمة التشغيل المبكرة ، تم تطوير ذاكرة التخزين المؤقت للقرص أولاً، ثم أنظمة التخزين المؤقت لملفات نظام التشغيل أيضاً ، لتسريع عمليات الإدخال/الإخراج للبيانات التي يتم الوصول إليها بشكل متكرر.

حتى مع وجود ذاكرة تخزين مؤقتة لملفات نظام التشغيل، سرعان ما أصبح البطء النسبي أو العرضي لعمليات الإدخال/الإخراج التي تتضمن الدلائل والملفات المخزنة على الأقراص بمثابة عنق زجاجة في زيادة الأداء المتوقع من خوادم الويب عالية المستوى، خاصة منذ منتصف إلى أواخر التسعينيات، عندما بدأ حجم حركة مرور الإنترنت على الويب في النمو بشكل كبير جنبًا إلى جنب مع الزيادة المستمرة في سرعة الإنترنت أو خطوط الشبكة.

بدأت دراسة وبحث مشكلة كيفية تسريع خدمة الملفات الثابتة بشكل أكثر كفاءة، وبالتالي زيادة الحد الأقصى لعدد الطلبات أو الاستجابات في الثانية ( RPS )، منذ منتصف التسعينيات، بهدف اقتراح نماذج تخزين مؤقت مفيدة يمكن تطبيقها في برامج خادم الويب. [ 46 ]

في الواقع العملي، تتضمن العديد من برامج خوادم الويب اليوم ذاكرة تخزين مؤقتة خاصة بها لملفات المستخدم ، مصممة خصيصًا لاستخدام خادم الويب، وتعتمد على تنفيذها ومعاييرها المحددة. [ 47 ] [ 48 ] [ 49 ]

أدى الانتشار الواسع لتقنية RAID ومحركات الأقراص الصلبة السريعة (أجهزة التخزين ذات سرعة الإدخال/الإخراج العالية جدًا) إلى تقليل ميزة وجود ذاكرة تخزين مؤقتة للملفات مدمجة في خادم الويب بشكل طفيف، ولكن بالطبع لم يتم القضاء عليها.

ذاكرة تخزين مؤقتة ديناميكية

قد لا يتغير المحتوى الديناميكي، الذي يتم إخراجه بواسطة وحدة داخلية أو برنامج خارجي، بشكل متكرر دائمًا (بالنظر إلى عنوان URL فريد يحتوي على مفاتيح أو معلمات)، وبالتالي، قد يتم تخزين الناتج مؤقتًا في ذاكرة الوصول العشوائي أو حتى على قرص سريع لفترة من الوقت (على سبيل المثال، من ثانية واحدة إلى عدة ساعات أو أكثر ) . [ 50 ]

يُستخدم التخزين المؤقت الديناميكي عادةً عندما يحتوي موقع الويب على صفحات ويب ديناميكية تتناول الأخبار والطقس والصور والخرائط، وما إلى ذلك، والتي لا تتغير بشكل متكرر (مثلاً كل n دقيقة) ويتم الوصول إليها من قبل عدد هائل من العملاء في الدقيقة والساعة؛ في هذه الحالات، يكون من المفيد أيضًا إعادة المحتوى المخزن مؤقتًا (دون استدعاء الوحدة الداخلية أو البرنامج الخارجي) لأن العملاء غالبًا لا يملكون نسخة محدثة من المحتوى المطلوب في ذاكرة التخزين المؤقت للمتصفح. [ 51 ]

على أي حال، في معظم الحالات، يتم تنفيذ هذا النوع من التخزين المؤقت بواسطة خوادم خارجية (مثل خادم وكيل عكسي ) أو عن طريق تخزين مخرجات البيانات الديناميكية في أجهزة كمبيوتر منفصلة، ​​تُدار بواسطة تطبيقات محددة (مثل memcached )، وذلك لتجنب التنافس على موارد الأجهزة (وحدة المعالجة المركزية، وذاكرة الوصول العشوائي، والأقراص) مع خوادم الويب. [ 52 ] [ 53 ]

خوادم الويب في وضع النواة ووضع المستخدم

يمكن دمج برنامج خادم الويب في نظام التشغيل وتنفيذه في مساحة النواة ، أو يمكن تنفيذه في مساحة المستخدم (مثل التطبيقات العادية الأخرى).

يمكن لخوادم الويب التي تعمل في وضع النواة (والتي تسمى عادةً خوادم الويب في مساحة النواة ) الوصول المباشر إلى موارد النواة، وبالتالي يمكن أن تكون، نظريًا، أسرع من تلك التي تعمل في وضع المستخدم، ولكن هناك عيوب في تشغيل خادم الويب في وضع النواة (مثل صعوبات في تطوير البرامج وتصحيحها ) في حين أن الأخطاء الحرجة في وقت التشغيل قد تؤدي إلى مشاكل خطيرة في نواة نظام التشغيل.

يتعين على خوادم الويب التي تعمل في وضع المستخدم طلب إذن من النظام لاستخدام المزيد من الذاكرة أو موارد وحدة المعالجة المركزية . ولا تقتصر هذه الطلبات الموجهة إلى النواة على استغراق وقت، بل قد لا تُلبى دائمًا لأن النظام يحجز الموارد لاستخدامه الخاص، ويتحمل مسؤولية مشاركة موارد الأجهزة مع جميع التطبيقات الأخرى قيد التشغيل. كما أن التشغيل في وضع المستخدم قد يعني استخدام المزيد من المخازن المؤقتة أو نسخ البيانات (بين مساحة المستخدم ومساحة النواة)، مما قد يؤدي إلى انخفاض أداء خادم الويب في وضع المستخدم.

في الوقت الحاضر، تُنفَّذ معظم برامج خوادم الويب في وضع المستخدم (لأن العديد من العيوب الطفيفة المذكورة آنفًا قد تم التغلب عليها بفضل الأجهزة الأسرع، وإصدارات أنظمة التشغيل الجديدة، وسرعة استدعاءات نظام التشغيل، وبرامج خوادم الويب المُحسَّنة). راجع أيضًا مقارنة برامج خوادم الويب لمعرفة أيها يعمل في وضع النواة أو في وضع المستخدم (يُشار إليه أيضًا بمساحة النواة أو مساحة المستخدم).

العروض

لتحسين تجربة المستخدم (من جانب العميل أو المتصفح)، يجب على خادم الويب الرد بسرعة (في أسرع وقت ممكن) على طلبات العميل؛ ما لم يتم تقييد استجابة المحتوى (عن طريق التكوين) لنوع معين من الملفات (مثل الملفات الكبيرة أو الضخمة)، يجب أيضًا إرسال محتوى البيانات المُعادة بأسرع ما يمكن (سرعة نقل عالية).

بمعنى آخر، يجب أن يكون خادم الويب سريع الاستجابة دائمًا ، حتى في ظل الحمل العالي لحركة مرور الويب، وذلك للحفاظ على إجمالي وقت انتظار المستخدم (مجموع وقت المتصفح + وقت الشبكة + وقت استجابة خادم الويب ) للحصول على استجابة في أدنى حد ممكن .

مقاييس الأداء

بالنسبة لبرامج خادم الويب، فإن مقاييس الأداء الرئيسية (التي يتم قياسها في ظل ظروف تشغيل مختلفة ) عادة ما تكون على الأقل ما يلي: [ 54 ]

  • عددعدد الطلبات في الثانية (RPS، على غرارQPS، اعتمادًا على إصدار HTTP وتكوينه ونوع طلبات HTTP وظروف التشغيل الأخرى)؛
  • عدد الاتصالات في الثانية ( CPS )، هو عدد الاتصالات في الثانية التي يقبلها خادم الويب (مفيد عند استخدام HTTP/1.0 أو HTTP/1.1 مع حد منخفض جدًا للطلبات أو الاستجابات لكل اتصال، أي 1 .. 20)؛
  • زمن انتقال الشبكة + وقت الاستجابة لكل طلب عميل جديد؛ عادةً ما تُظهر أداة القياس عدد الطلبات التي تم تلبيتها ضمن نطاق زمني محدد (على سبيل المثال، في غضون 1 مللي ثانية، 3 مللي ثانية، 5 مللي ثانية، 10 مللي ثانية، 20 مللي ثانية، 30 مللي ثانية، 40 مللي ثانية) أو أقصر وقت استجابة، ومتوسط ​​وقت الاستجابة، وأطول وقت استجابة؛
  • معدل نقل الاستجابات ، بالبايت في الثانية.

من بين ظروف التشغيل، يعتبر عدد اتصالات العميل المتزامنة (1 .. n ) المستخدمة أثناء الاختبار معلمة مهمة لأنه يسمح بربط مستوى التزامن الذي يدعمه خادم الويب بنتائج مقاييس الأداء المختبرة.

كفاءة البرمجيات

تصميم ونموذج برنامج خادم الويب المحدد المعتمد :

  • عملية واحدة أو عمليات متعددة؛
  • خيط واحد (بدون خيط) أو خيوط متعددة لكل عملية؛
  • usage of coroutines or not;

... and other programming techniques, such as:

... used to implement a web server program, can bias a lot the performances and in particular the scalability level that can be achieved under heavy load or when using high end hardware (many CPUs, disks and lots of RAM).

In practice some web server software models may require more OS resources (specially more CPUs and more RAM) than others to be able to work well and so to achieve target performances.

Operating conditions

There are many operating conditions that can affect the performances of a web server; performance values may vary depending on:

  • the settings of web server (including the fact that log file is or is not enabled, etc.);
  • the HTTP version used by client requests;
  • the average HTTP request type (method, length of HTTP headers and optional body);
  • whether the requested content is static or dynamic;
  • whether the content is cached or not cached (by server or client);
  • whether the content is compressed on the fly (when transferred), pre-compressed (i.e., when a file resource is stored on disk already compressed so that web server can send that file directly to the network with the only indication that its content is compressed) or not compressed at all;
  • whether the connections are or are not encrypted;
  • the average network speed between web server and its clients;
  • the number of active TCP connections;
  • the number of active processes managed by web server (including external CGI, SCGI, FCGI programs);
  • the hardware and software limitations or settings of the OS of the computers on which the web server runs;
  • other minor conditions.

Benchmarking

Performances of a web server are typically benchmarked by using one or more of the available automated load testing tools.

Load limits

عادة ما يكون لخادم الويب (تثبيت البرنامج) حدود تحميل محددة مسبقًا لكل مجموعة من ظروف التشغيل ، وذلك أيضًا لأنه محدود بموارد نظام التشغيل ولأنه لا يمكنه التعامل إلا مع عدد محدود من اتصالات العميل المتزامنة (عادة ما بين 2 وعشرات الآلاف لكل عملية خادم ويب نشطة، انظر أيضًا مشكلة C10k ومشكلة C10M ).

عندما يقترب خادم الويب من حدود التحميل الخاصة به أو يتجاوزها، فإنه يتعرض للحمل الزائد وبالتالي قد يصبح غير مستجيب .

أسباب التحميل الزائد

قد تتعرض خوادم الويب في أي وقت لحمل زائد بسبب واحد أو أكثر من الأسباب التالية:

  • زيادة حركة المرور المشروعة على الإنترنت . آلاف أو حتى ملايين العملاء الذين يتصلون بالموقع الإلكتروني في فترة زمنية قصيرة (على سبيل المثال، تأثير سلاش دوت ).
  • هجمات الحرمان من الخدمة الموزعة . هجوم الحرمان من الخدمة (هجوم DoS) أو هجوم الحرمان من الخدمة الموزع (هجوم DDoS) هو محاولة لجعل مورد حاسوبي أو شبكي غير متاح لمستخدميه المقصودين.
  • ديدان الكمبيوتر التي تتسبب أحيانًا في حركة مرور غير طبيعية بسبب ملايين أجهزة الكمبيوتر المصابة (غير المنسقة فيما بينها).
  • يمكن أن تتسبب ديدان XSS في زيادة حركة المرور بسبب ملايين المتصفحات أو خوادم الويب المصابة.
  • لا يتم تصفية حركة مرور برامج الروبوت على الإنترنت أو تقييدها على مواقع الويب الكبيرة ذات موارد الشبكة القليلة جدًا (مثل النطاق الترددي ) أو موارد الأجهزة (وحدات المعالجة المركزية، وذاكرة الوصول العشوائي، والأقراص).
  • تباطؤ الإنترنت (الشبكة) (على سبيل المثال، بسبب فقدان الحزم) بحيث يتم تلبية طلبات العميل بشكل أبطأ ويزداد عدد الاتصالات لدرجة الوصول إلى حدود الخادم.
  • خوادم الويب، التي تقدم محتوى ديناميكيًا ، تنتظر استجابات بطيئة قادمة من أجهزة الكمبيوتر الخلفية (مثل قواعد البيانات )، ربما بسبب كثرة الاستعلامات المختلطة بكثرة عمليات الإدخال أو التحديث لبيانات قاعدة البيانات؛ في هذه الحالات، يتعين على خوادم الويب انتظار استجابات البيانات الخلفية قبل الرد على عملاء HTTP، ولكن خلال فترات الانتظار هذه، يصل عدد كبير جدًا من اتصالات أو طلبات العملاء الجديدة، وبالتالي تصبح مثقلة بالأعباء.
  • قد تتعرض خوادم الويب ( أجهزة الكمبيوتر ) لعدم التوافر الجزئي . قد يحدث هذا بسبب الصيانة أو التحديث المطلوب أو العاجل، أو أعطال في الأجهزة أو البرامج مثل أعطال قواعد البيانات ؛ في هذه الحالات، قد تتعرض خوادم الويب المتبقية لحركة مرور زائدة وتصبح مثقلة بالأعباء.

أعراض الإرهاق

عادة ما تكون أعراض زيادة الحمل على خادم الويب كما يلي:

  • يتم تلبية الطلبات مع تأخيرات (قد تكون طويلة) (من ثانية واحدة إلى بضع مئات من الثواني).
  • يقوم خادم الويب بإرجاع رمز خطأ HTTP ، مثل 500، 502، [ 55 ] [ 56 ] 503، [ 57 ] 504، [ 58 ] 408، أو حتى 404 متقطع .
  • يرفض خادم الويب أو يعيد ضبط (يقاطع) اتصالات TCP قبل أن يعيد أي محتوى.
  • في حالات نادرة جدًا، لا يُعيد خادم الويب سوى جزء من المحتوى المطلوب. يُمكن اعتبار هذا السلوك خللًا ، حتى وإن كان عادةً ما يظهر كعرض من أعراض التحميل الزائد.

تقنيات مقاومة التحميل الزائد

للتغلب جزئياً على حدود التحميل التي تتجاوز المتوسط ​​ولمنع التحميل الزائد، تستخدم معظم المواقع الإلكترونية الشهيرة تقنيات شائعة مثل التقنيات التالية:

  • ضبط معلمات نظام التشغيل وفقًا لإمكانيات الأجهزة واستخدامها.
  • ضبط معلمات خوادم الويب لتحسين أمانها وأدائها.
  • نشر تقنيات التخزين المؤقت للويب (ليس فقط للمحتويات الثابتة ولكن، كلما أمكن ذلك، للمحتويات الديناميكية أيضًا).
  • إدارة حركة مرور الشبكة، باستخدام:
  • باستخدام أسماء نطاقات وعناوين IP وأجهزة كمبيوتر مختلفة لتقديم أنواع مختلفة من المحتوى (الثابت والديناميكي)؛ الهدف هو فصل الملفات الكبيرة أو الضخمة download.*(يمكن استبدال هذا النطاق أيضًا بشبكة توصيل محتوى CDN ) عن الملفات الصغيرة والمتوسطة الحجم static.*وعن الموقع الديناميكي الرئيسي (ربما حيث يتم تخزين بعض المحتويات في قاعدة بيانات خلفية ) www.*؛ الفكرة هي القدرة على تقديم الملفات الكبيرة أو الضخمة (أكثر من 10-1000 ميجابايت) بكفاءة (ربما عن طريق تقييد التنزيلات) وتخزين الملفات الصغيرة والمتوسطة الحجم مؤقتًا بالكامل، دون التأثير على أداء الموقع الديناميكي تحت ضغط عالٍ، وذلك باستخدام إعدادات مختلفة لكل (مجموعة) من أجهزة خادم الويب:
    • https://download.example.com
    • https://static.example.com
    • https://www.example.com
  • استخدام العديد من خوادم الويب (أجهزة الكمبيوتر) التي يتم تجميعها معًا خلف موازن التحميل بحيث تعمل أو تُرى كخادم ويب واحد كبير.
  • إضافة المزيد من موارد الأجهزة (مثل ذاكرة الوصول العشوائي ، والأقراص الصلبة السريعة ) إلى كل جهاز كمبيوتر.
  • استخدام برامج حاسوبية أكثر كفاءة لخوادم الويب (انظر أيضًا: كفاءة البرامج ).
  • إن استخدام واجهة بوابة خادم الويب الأكثر كفاءة لمعالجة الطلبات الديناميكية (تشغيل برنامج خارجي واحد أو أكثر في كل مرة يتم فيها استرداد صفحة ديناميكية، يؤدي إلى انخفاض الأداء).
  • استخدام تقنيات البرمجة الأخرى والحلول البديلة ، خاصة إذا كان المحتوى الديناميكي متضمنًا، لتسريع استجابات HTTP (أي عن طريق تجنب المكالمات الديناميكية لاسترداد الكائنات، مثل أوراق الأنماط والصور والبرامج النصية)، التي لا تتغير أبدًا أو تتغير نادرًا جدًا، عن طريق نسخ هذا المحتوى إلى ملفات ثابتة مرة واحدة ثم الحفاظ على مزامنتها مع المحتوى الديناميكي.
  • يُستخدم أحدث إصدارات بروتوكول HTTP الفعّالة (على سبيل المثال، بالإضافة إلى HTTP/1.1 الشائع، يُمكن تفعيل HTTP/2 وربما HTTP/3 أيضًا، كلما توفرت برامج خوادم الويب التي تدعم البروتوكولين الأخيرين بشكل موثوق) لتقليل عدد اتصالات TCP/IP التي يبدأها كل عميل وحجم البيانات المتبادلة بشكل كبير (بفضل تمثيل رؤوس HTTP الأكثر إحكامًا وربما ضغط البيانات). قد لا يمنع هذا التحميل الزائد على ذاكرة الوصول العشوائي (RAM) ووحدة المعالجة المركزية (CPU) الناتج عن الحاجة إلى التشفير. كما قد لا يعالج التحميل الزائد الناتج عن الملفات الكبيرة جدًا التي يتم تحميلها بسرعة عالية، لأنها مُحسّنة للتزامن. [ 59 ] [ 60 ]

الحصة السوقية

رسم بياني: الحصة السوقية لجميع المواقع الإلكترونية لأشهر خوادم الويب 2005-2021
رسم بياني: الحصة السوقية لجميع المواقع الإلكترونية لأشهر خوادم الويب 1995-2005

فيما يلي أحدث الإحصائيات المتعلقة بحصة السوق لجميع مواقع أفضل خوادم الويب على الإنترنت من قبل Netcraft .

خادم الويب: الحصة السوقية لجميع المواقع
تاريخnginx (شركة Nginx)أباتشي ( مؤسسة برمجيات أباتشي )أوبن ريستي (مؤسسة برمجيات أوبن ريستي)خادم كلاود فلير ( شركة كلاود فلير )IIS ( مايكروسوفت )جوجل ( GWS )آحرون
أكتوبر 2021 [ 61 ]34.95%24.63%6.45%4.87%4.00% (*)4.00% (*)أقل من 22%
فبراير 2021 [ 62 ]34.54%26.32%6.36%5.0%6.5%3.90%أقل من 18%
فبراير 2020 [ 63 ]36.48%24.5%4.00%3.0%14.21%3.18%أقل من 15%
فبراير 2019 [ 64 ]25.34%26.16%غير متوفرغير متوفر28.42%1.66%أقل من 19%
فبراير 2018 [ 65 ]24.32%27.45%غير متوفرغير متوفر34.50%1.20%أقل من 13%
فبراير 2017 [ 66 ]19.42%20.89%غير متوفرغير متوفر43.16%1.03%أقل من 15%
فبراير 2016 [ 67 ]16.61%32.80%غير متوفرغير متوفر29.83%2.21%أقل من 19%

ملاحظة: (*) النسبة المئوية مقربة إلى عدد صحيح، لأن قيمها العشرية لا يتم الإبلاغ عنها علنًا بواسطة صفحة المصدر (يتم الإبلاغ عن قيمتها المقربة فقط في الرسم البياني).

انظر أيضاً

واجهات بوابة خادم الويب القياسية المستخدمة للمحتويات الديناميكية :

بعض واجهات خادم الويب الأخرى (خاصة بالخادم أو لغة البرمجة ) المستخدمة للمحتويات الديناميكية:

  • تتضمن مستندات HTML الثابتة التي تحتوي على توجيهات SSI من جانب الخادم، والتي نادراً ما تستخدم، بيانات ديناميكية صغيرة عند عرض الصفحات (مثل التاريخ والوقت ومحتويات الملفات الثابتة الأخرى وما إلى ذلك) .
  • واجهة برمجة تطبيقات خادم SAPI :
    • واجهة برمجة تطبيقات خادم الإنترنت ISAPI
    • واجهة برمجة تطبيقات خادم نتسكيب NSAPI
  • واجهة بوابة خادم الويب PSGI Perl
  • واجهة بوابة خادم الويب WSGI بايثون
  • واجهة بوابة خادم الويب Rack Rack
  • واجهة بوابة خادم الويب جافا سكريبت JSGI
  • جافا سيرفلت ، صفحات خادم جافا
  • صفحات الخادم النشطة ، ASP.NET

مراجع

  1. 1 2 3 نانسي ج. ييغر؛ روبرت إي. ماكغراث (1996). تقنية خادم الويب . مورغان كوفمان. ISBN 1-55860-376-Xأُرشف من المصدر الأصلي في 20 يناير 2023. تم الاطلاع عليه في 22 يناير 2021 .
  2. ويليام نيلسون؛ أرفيند سرينيفاسان؛ مورثي تشينتالاباتي (2009). خادم الويب من صن: الدليل الأساسي . بيرسون للتعليم. ISBN 978-0-13-712892-1أُرشف من المصدر الأصلي في 20 يناير 2023. تم الاطلاع عليه في 14 أكتوبر 2021 .
  3. "ما هو خادم الويب؟ - وثائق MDN على الويب" . وثائق MDN على الويب . ١٣ مارس ٢٠٢٥. تم الاطلاع عليه بتاريخ ٢٠ مارس ٢٠٢٥ .
  4. "ما هو خادم الويب وكيف يعمل؟ - معجم مصطلحات تكنولوجيا المعلومات | سولار ويندز" . www.solarwinds.com . تاريخ الاطلاع: 26 أبريل 2025 .
  5. "ما هي خوادم الويب؟" . Akamai.com . 26 أبريل 2025.
  6. "مواد دراسية حول خوادم الويب - إي جيان كوش" (ملف PDF) . إي جيان كوش . تم الاطلاع عليه بتاريخ 20 مارس 2025 .
  7. "تاريخ موجز للويب" . سيرن . تم الاطلاع عليه بتاريخ 20 مارس 2025 .
  8. زولفغاريفارد، إيلي (24 نوفمبر 2018). ""السير تيم بيرنرز لي، الملقب بـ"أبو الإنترنت"، يتحدث عن خطته لمكافحة الأخبار الكاذبة" . صحيفة التلغراف . لندن. ISSN 0307-1235 . مؤرشف من الأصل بتاريخ 11 يناير 2022. تم الاطلاع عليه بتاريخ 1 فبراير 2019 . 
  9. "تاريخ الحواسيب والحوسبة، الإنترنت، ميلاد تيم بيرنرز لي، شبكة الويب العالمية" . history-computer.com . مؤرشف من الأصل في 4 يناير 2019. تم الاطلاع عليه في 1 فبراير 2019 .
  10. 1 2 3 تيم بيرنر-لي (1992). "تاريخ مشروع شبكة الويب العالمية (الأصل)" . سيرن (مشروع شبكة الويب العالمية). مؤرشف من الأصل في 8 ديسمبر 2021. تم الاطلاع عليه في 20 ديسمبر 2021 .
  11. 1 2 تيم بيرنر-لي (20 أغسطس 1991). "تطبيق النص التشعبي واسع النطاق لشبكة الويب العالمية متاح (إعلان)" . سيرن (مشروع شبكة الويب العالمية). مؤرشف من الأصل في 2 ديسمبر 2021. تم الاسترجاع في 16 أكتوبر 2021 .
  12. 1 2 مسؤول الموقع. "سجل الموقع" . سيرن (مشروع الشبكة العنكبوتية العالمية). مؤرشف من الأصل في 2 ديسمبر 2021. تم الاطلاع عليه في 16 أكتوبر 2021 .
  13. تيم بيرنر-لي (2 أغسطس 1991). "محددات الروابط التشعبية..." سيرن (مشروع الشبكة العنكبوتية العالمية). مؤرشف من الأصل في 7 ديسمبر 2021. تم الاطلاع عليه في 16 أكتوبر 2021 .
  14. تيم سميث؛ فرانسوا فلوكيجر. "ترخيص الويب" . سيرن (مشروع شبكة الويب العالمية). مؤرشف من الأصل في 6 ديسمبر 2021. تم الاطلاع عليه في 16 أكتوبر 2021 .
  15. علي مصباح (2009). تحليل واختبار تطبيقات الويب أحادية الصفحة القائمة على تقنية Ajax . ISBN 978-90-79982-02-8تم الاطلاع عليه بتاريخ 18 ديسمبر 2021 .
  16. ١ ٢ روبرت هوبز زاكون. "الجدول الزمني للإنترنت لهوبز، الإصدار ٥.١ (نمو شبكة الويب العالمية). ملاحظة: حتى عام ١٩٩٦، كان عدد خوادم الويب يساوي عدد مواقع الويب" . جمعية الإنترنت الأمريكية (ISOC). مؤرشف من الأصل في ١٥ أغسطس ٢٠٠٠. تم الاطلاع عليه في ١٨ ديسمبر ٢٠٢١ .
  17. "NCSA httpd" . NCSA (أرشيف الويب). مؤرشف من الأصل في 1 أغسطس 2010. تم الاطلاع عليه في 16 ديسمبر 2021 .
  18. "About the Apache HTTPd server: How Apache Came to be". Apache: HTTPd server project. 1997. Archived from the original on 7 June 2008. Retrieved 17 December 2021.
  19. "Web Server Survey, NOTE: number of active web sites in year 2000 has been interpolated". Netcraft. 22 December 2021. Archived from the original on 27 December 2021. Retrieved 27 December 2021.
  20. "Netcraft: web server software (1996)". Netcraft (web archive). Archived from the original on 30 December 1996. Retrieved 16 December 2021.
  21. "Overview of new features in Apache 2.2". Apache: HTTPd server project. 2005. Archived from the original on 27 November 2021. Retrieved 16 December 2021.
  22. "Overview of new features in Apache 2.4". Apache: HTTPd server project. 2012. Archived from the original on 26 November 2021. Retrieved 16 December 2021.
  23. "Connections, persistent connections: practical considerations". RFC 2616, Hypertext Transfer Protocol -- HTTP/1.1. IETF. pp. 46–47. sec. 8.1.4. doi:10.17487/RFC2616. RFC2616.
  24. "Maximum concurrent connections to the same domain for browsers". 2017. Archived from the original on 21 December 2021. Retrieved 21 December 2021.
  25. "Linux Web Server Performance Benchmark - 2016 results". RootUsers. 8 March 2016. Archived from the original on 23 December 2021. Retrieved 22 December 2021.
  26. 12"Will HTTP/2 replace HTTP/1.x?". IETF HTTP Working Group. Archived from the original on 27 September 2014. Retrieved 22 December 2021.
  27. 12"Implementations of HTTP/2 in client and server software". IETF HTTP Working Group. Archived from the original on 23 December 2021. Retrieved 22 December 2021.
  28. "لماذا اتصال TCP واحد فقط؟" . مجموعة عمل بروتوكول HTTP التابعة لـ IETF. مؤرشف من الأصل في 27 سبتمبر 2014. تم الاطلاع عليه في 22 ديسمبر 2021 .
  29. 1 2 "مراسلة العميل/الخادم" . RFC 7230، HTTP/1.1: بناء جملة الرسالة والتوجيه . IETF . الصفحات 7-8. القسم 2.1. doi : 10.17487/RFC7230 . RFC 7230 .   
  30. 1 2 "معالجة الرسائل غير المكتملة" . RFC 7230، HTTP/1.1: بناء جملة الرسائل والتوجيه . IETF . ص 34. القسم 3.4. doi : 10.17487/RFC7230 . RFC 7230 .   
  31. "متانة تحليل الرسائل" . RFC 7230، HTTP/1.1: بناء جملة الرسائل والتوجيه . IETF . الصفحات 34-35. القسم 3.5. doi : 10.17487/RFC7230 . RFC 7230 .   
  32. https://developer.mozilla.org/en-US/docs/Learn/Server-side/First_steps/Routing
  33. 1 2 3 4 5 "ربط عناوين URL بمواقع نظام الملفات" . أباتشي: مشروع خادم HTTPd. 2021. مؤرشف من الأصل في 20 أكتوبر 2021. تم الاطلاع عليه في 19 أكتوبر 2021 .
  34. "المحتوى الديناميكي باستخدام CGI" . مشروع خادم Apache HTTPd. 2021. مؤرشف من الأصل في 15 نوفمبر 2021. تم الاطلاع عليه في 19 أكتوبر 2021 .
  35. كريس شيفتليت (2003). دليل مطور HTTP . دار نشر سامز. رقم ISBN 0-672-32454-7أُرشف من الأصل في 20 يناير 2023. تم الاطلاع عليه في 9 ديسمبر 2021 .
  36. سباسويفيتش، أناستازيا (26 أغسطس 2024). "ما هي واجهة البوابة المشتركة؟" . معجم فينيكس ناب لتكنولوجيا المعلومات . تم الاطلاع عليه في 18 مارس 2026 .
  37. 1 2 3 ASF Infrabot (22 مايو 2019). "قوائم الدليل" . مؤسسة أباتشي: مشروع خادم HTTPd. مؤرشف من الأصل في 7 يونيو 2019. تم الاسترجاع في 16 نوفمبر 2021 .
  38. "أباتشي: عرض محتويات الدليل لتنزيل الملفات" . أباتشي: خادم HTTPd. مؤرشف من الأصل في 2 ديسمبر 2021. تم الاطلاع عليه في 16 ديسمبر 2021 .
  39. "خطأ العميل 4xx" . RFC 7231، HTTP/1.1: الدلالات والمحتوى . IETF . ص 58. القسم 6.5. doi : 10.17487/RFC7231 . RFC 7231 .   
  40. "خطأ الخادم 5xx" . RFC 7231، HTTP/1.1: الدلالات والمحتوى . IETF . الصفحات 62-63. القسم 6.6. doi : 10.17487/RFC7231 . RFC 7231 .   
  41. "مقدمة" . RFC 7235، HTTP/1.1: المصادقة . IETF . ص 3. القسم 1. doi : 10.17487/RFC7235 . RFC 7235 .   
  42. 1 2 "رموز حالة الاستجابة: إعادة التوجيه 3xx" . RFC 7231، HTTP/1.1: الدلالات والمحتوى . IETF . الصفحات 53-54. القسم 6.4. doi : 10.17487/RFC7231 . RFC 7231 .   
  43. "نجاح 2xx" . RFC 7231، HTTP/1.1: الدلالات والمحتوى . IETF . الصفحات 51-54. القسم 6.3. doi : 10.17487/RFC7231 . RFC 7231 .   
  44. "دليل التخزين المؤقت" . أباتشي: مشروع خادم HTTPd. 2021. مؤرشف من الأصل في 9 ديسمبر 2021. تم الاسترجاع في 9 ديسمبر 2021 .
  45. "تخزين محتوى NGINX مؤقتًا" . F5 NGINX. 2021. مؤرشف من الأصل في 9 ديسمبر 2021. تم الاسترجاع في 9 ديسمبر 2021 .
  46. إيفانجيلوس ب. ماركاتوس (1996). "التخزين المؤقت لوثائق الويب في الذاكرة الرئيسية" . شبكات الحاسوب وأنظمة ISDN. مؤرشف من الأصل في 20 يناير 2023. تم الاطلاع عليه في 9 ديسمبر 2021 .
  47. "خادم الويب IPlanet 7.0.9: ذاكرة التخزين المؤقت للملفات" . أوراكل. 2010. مؤرشف من الأصل في 9 ديسمبر 2021. تم الاطلاع عليه في 9 ديسمبر 2021 .
  48. "وحدة أباتشي mod_file_cache" . أباتشي: مشروع خادم HTTPd. 2021. مؤرشف من الأصل في 9 ديسمبر 2021. تم الاسترجاع في 9 ديسمبر 2021 .
  49. "خادم HTTP: التكوين: ذاكرة التخزين المؤقت للملفات" . جنو. 2021. مؤرشف من الأصل في 9 ديسمبر 2021. تم الاسترجاع في 9 ديسمبر 2021 .
  50. "وحدة أباتشي mod_cache_disk" . أباتشي: مشروع خادم HTTPd. 2021. مؤرشف من الأصل في 9 ديسمبر 2021. تم الاسترجاع في 9 ديسمبر 2021 .
  51. "ما هي ذاكرة التخزين المؤقت الديناميكية؟" . موقع تعليمي. 2021. مؤرشف من الأصل في 9 ديسمبر 2021. تم الاطلاع عليه في 9 ديسمبر 2021 .
  52. "دليل استخدام خيار التخزين المؤقت الديناميكي" . سايت جراوند. 2021. مؤرشف من الأصل في 20 يناير 2023. تم الاطلاع عليه في 9 ديسمبر 2021 .
  53. أرون إينجار؛ جيم تشالنجر (2000). "تحسين أداء خادم الويب عن طريق تخزين البيانات الديناميكية مؤقتًا" . يوزنيكس . تم الاطلاع عليه بتاريخ 9 ديسمبر 2021 .
  54. جوسارا م. ألميدا ؛ فيرجيليو ألميدا؛ ديفيد ج. ييتس (7 يوليو 1997). "WebMonitor: أداة لقياس أداء خادم شبكة الويب العالمية" . فيرست مونداي . doi : 10.5210/fm.v2i7.539 . مؤرشف من الأصل في 4 نوفمبر 2021. تم الاسترجاع في 4 نوفمبر 2021 .
  55. فيشر، تيم؛ لايف واير. "هل تواجه خطأ 502 بوابة غير صالحة؟ إليك ما يجب فعله" . لايف واير . مؤرشف من الأصل في 23 فبراير 2017. تم الاطلاع عليه في 1 فبراير 2019 .
  56. "ما هو خطأ 502 في البوابة وكيف يتم إصلاحه؟" . IT PRO . مؤرشف من الأصل في 20 يناير 2023. تم الاطلاع عليه في 1 فبراير 2019 .
  57. فيشر، تيم؛ لايف واير. "هل تواجه خطأ 503: الخدمة غير متوفرة؟ إليك ما يجب فعله" . لايف واير . مؤرشف من الأصل في 20 يناير 2023. تم الاطلاع عليه في 1 فبراير 2019 .
  58. فيشر، تيم؛ لايف واير. "هل تواجه خطأ 504 في مهلة البوابة؟ إليك ما يجب فعله" . لايف واير . مؤرشف من الأصل في 23 أبريل 2021. تم الاسترجاع في 1 فبراير 2019 .
  59. العديد (24 يناير 2021). "بطء التحميل مع HTTP/2" . جيت هاب. مؤرشف من الأصل في 16 نوفمبر 2021. تم الاسترجاع في 15 نوفمبر 2021 .
  60. جون هو تشوي (24 أغسطس 2020). "تحسين سرعة تحميل HTTP/2" . كلاود فلير. مؤرشف من الأصل في 16 نوفمبر 2021. تم الاطلاع عليه في 15 نوفمبر 2021 .
  61. "استطلاع خوادم الويب لشهر أكتوبر 2021" . نتكرافت . 15 أكتوبر 2021. مؤرشف من الأصل في 15 نوفمبر 2021. تم الاطلاع عليه في 15 نوفمبر 2021 .
  62. "استطلاع خوادم الويب لشهر فبراير 2021" . نتكرافت . 26 فبراير 2021. مؤرشف من الأصل في 15 أبريل 2021. تم الاطلاع عليه في 8 أبريل 2021 .
  63. "استطلاع خوادم الويب لشهر فبراير 2020" . نتكرافت . 20 فبراير 2020. مؤرشف من الأصل في 17 أبريل 2021. تم الاطلاع عليه في 8 أبريل 2021 .
  64. "استطلاع خوادم الويب لشهر فبراير 2019" . نتكرافت . 28 فبراير 2019. مؤرشف من الأصل في 15 أبريل 2021. تم الاطلاع عليه في 8 أبريل 2021 .
  65. "استطلاع خوادم الويب لشهر فبراير 2018" . نتكرافت . 13 فبراير 2018. مؤرشف من الأصل في 17 أبريل 2021. تم الاطلاع عليه في 8 أبريل 2021 .
  66. "استطلاع خوادم الويب لشهر فبراير 2017" . نتكرافت . 27 فبراير 2017. مؤرشف من الأصل في 14 مارس 2017. تم الاطلاع عليه في 13 مارس 2017 .
  67. "استطلاع خوادم الويب لشهر فبراير 2016" . نتكرافت . 22 فبراير 2016. مؤرشف من الأصل في 27 يناير 2022. تم الاطلاع عليه في 27 يناير 2022 .