اول رفتم سراغ Pipelining فکر نمیکردم اینقدر مطالب مختلف رو همراه خودش بیاره ولی واقعا جالب شد و باعث درک بهتری نسبت به HTTP Protocol شد.
تا جایی تونستم مطلب ساده و روان کردم امیدوارم خوب یاد بگیرید :)
برای درک بهتر Pipelined Connection ابتدا باید Persistent Connection رو یاد بگیریم:
که با اسم HTTP keep alive معروف است.
با استفاده از آن میتوان در HTTP از یک اتصال در بستر TCP برای ارسال و دریافت چندین HTTP Req/Res به جای اینکه به ازای هر Request/Response یک اتصال جدید به وجود بیاید.
مزایای Persistent Connection:
معایب :
یکی از ویژگی های HTTP 1.1 امکان ارسال چندین Request بر بستر یک اتصال TCP بدون صبر کردن برای Response مربوطه.
در HTTP 1.1 برای اینکه سرور Response درستی برای Pipelined Request داشته باشد باید شناسایی دقیقی داشته باشد.
اگر سرور از HTTP Pipelining پشتیبانی نمیکند response معتبر ولی non-pipelined برمیگرداند.
مشکل اصلی Pipelining در HTTP Intermediate Node است اگر تنها یکی از intermediate node در زنجیره HTTP به درستی Pipelined Request مدیریت نکند همه کارها دچار اختلال میشود.
در HTTP 2 یک تغییر بزرگ به وجود اومد Multiplexing جایگزین Pipelining شد.
در HTTP 2 درخواست ها(request) امکان استفاده از یک اتصال واحد رو برای کلاینت امکان پذیر میکند.
به این معنی که می توان از یک اتصال واحد بین کلاینت و وب سرور برای ارائه همه درخواست ها به صورت
غیرهمزمان استفاده کرد، و سرور وب را قادر می سازد از از منابع کمتری استفاده کند، بنابراین کاربران بیشتری را
به طور همزمان پشتیبانی می کند.
مثال برای درک بهتر Multiplexing:
فرض کنیم میخواهیم 10تا کالا برای تحویل درب منزل سفارش بدهیم:
+میتوانید کالاهای خود را با ترتیب خاصی سفارش دهیم بدون هیچ تاخیری
-فروشگاه در صورت آماده بودن ارسال میکند، بنابراین ممکن است با ترتیب متفاوتی از خواسته ایم فرستاده شوند، حتی ممکن است سفارش اصلی به چند سفارش تقسیم شود تا برخی از کالاها در اولین قسمت سفارش ارسال بشود.
منابع: