شرح صفوف ومحتوى الفقرة
تخيّل أنك تريد سؤال صديقك عن ثلاثة أشياء في الهاتف: هل تتصل به وتسأل السؤال الأول ثم تغلق الخط، وتعيد الاتصال للسؤال الثاني وتغلق الخط، ثم تتصل ثالثة؟ أم تفتح المكالمة مرة واحدة وتسأل الأسئلة الثلاثة ثم تغلق الخط عند الانتهاء؟ في HTTP، فتح قناة الاتصال (TCP) يستهلك وقتاً؛ ولذلك مرّت إدارة الاتصال بين المتصفح والسيرفر بطريقتين:
- 1. الاتصالات المؤقتة (Short-Lived Connections — قديماً): يفتح المتصفح قناة اتصال
TCPجديدة لطلب ملف واحد فقط (مثل صفحةHTML)، وبمجرد استلام الرد يغلق القناة فوراً! ثم يضطر لفتح قناة ثانية لملف التنسيقCSS، وقناة ثالثة للصورة؛ مما يبطئ تحميل الموقع. - 2. الاتصالات المستمرة (Persistent Connections — الافتراضي اليوم): يفتح المتصفح قناة اتصال
TCPمرة واحدة فقط، ويستخدم نفس القناة المفتوحة لإرسال طلب الصفحة وطلب التنسيق وطلب الصورة واحداً تلو الآخر بسرعة فائقة، ثم يغلق القناة بعد انتهاء التحميل أو بعد فترة خمول قصيرة.
قارن في المثال العملي والمخطط البصري الآتيين بين عدد المرات التي يُفتح فيها اتصال الشبكة لجلب صفحة واحدة بمواردها الثلاثة في الطريقتين:
[Open TCP #1 -> GET /page.html -> Close] + [Open TCP #2 -> GET /app.css -> Close] + [Open TCP #3 -> GET /logo.png -> Close][Open TCP #1 -> GET /page.html -> GET /app.css -> GET /logo.png -> Close after idle timeout]