همه چیز درباره HTTP 2
IETF Streaming Group , در سال ۲۰۱۵ و پس از گذشت ۱۶ سال از انتشار HTTP/1.1, نسخه 2 آن را تایید کردند. HTTP 2 با هدف کاهش تاخیر و جایگزینی راه حل های منسوخ شده HTTP/1.1 معرفی شده است تا برای Response time(زمان پاسخگویی) های جدید مناسب باشد. همانطور که اشاره شد, HTTP/1.1 در سال ۱۹۹۹ معرفی شد و در این مدت تکنولوژي های تحت وب دست خوش تغییرات بسیاری شدهاند. مردم بیش از پیش با اینترنت تعامل دارند و اگر Response time آنها از حد مشخصی بیشتر باشد, احساس میکنند به خوبی نمیتوانند از اینترنت استفاده کنند. بنابراین بهبود Response time یکی از اهداف اصلی HTTP 2 است.
تصویر زیر یک مقایسه میان سرعت دانلود توسط HTTP/1.1 و HTTP2 را نشان میدهد. در این آزمایش, یک تصویر که از چند تصویر کوچک تشکیل میشود با استفاده از HTTP/1.1 و HTTP2 دریافت میشود:
برای انجام این آزمایش میتوانید به این لینک مراجعه کنید.
Multiplexing
در HTTP/1.1 حداکثر میتوانیم ۸ Connection همزمان فعال داشته باشیم اما در دو مرورگری که بیشتر مورد استفاده قرار میگیرند, حداکثر تعداد connection ها برابر با ۶ است. بنابراین اگر بخواهیم connection های بیشتری داشته باشیم, باید منتظر بمانیم تا connection های فعلی به پایان برسند و connection جدید ایجاد کنیم. اما در HTTP 2 ارتباط به صورت مفرد انجام میشود. به این معنا که یک connection ایجاد میشود و تمام ارتباطات به صورت دوطرفه (bi-directional) در آن صورت میپذیرد. ایجاد هر connection میان Client و Server به یک زمان نیاز دارد. بنابراین در این روش این زمان حذف میگردد و ارتباط سریعتر انجام میشود.
Header Compression
پروتکل HTTP/1.1 به صورت text-based است. در بعضی موارد یک header باید چندین و چند بار ارسال میشد. همین امر باعث میشد تا یک حجمی از پهنای باند برای این header ها استفاده شود. اما در HTTP2 یک جدول header های یک request را مدیریت میکند. برای مطالعه بیشتر میتوانید به این لینک مراجعه نمایید. به این ترتیب HTTP2 پهنای باند کمتری را مصرف میکند. در حقیقت HTTP2 از ایجاد چند header یکسان جلوگیری میکند. به این ترتیب نمیتواند آن را یک روش فشرده سازی دانست.
PUSH
در ابتدا ممکن است این تصور پیش آید که PUSH یک روش جدید در WebSocket است. اما این تصور صحت ندارد. WebSocket یک ارتباط دو طرفه میان Client و Server ایجاد میکند. پس از ایجاد یک TCP connection اطلاعات میان Client و Server جابجا میشود. اما در HTTP2 مشکل دیگری با استفاده از PUSH مرتفع شده است.
push یک روش است که Server منابع مورد نیاز مانند صفحات html, کد های Css و javaScript را برای client به صورت پیوسته ارسال نماید. در HTTP/1.1 این مشکل وجود داشت که client برای هر صفحه باید به ترتیب منابع مورد نیاز را به Server اعلام میکرد و منابع را دریافت میکرد. اما وقتی یک صفحه html بارگذاری میشود, واضح است که client به css style های آن نیز نیاز دارد. در HTTP2 این درخواست های مشخص و واضح حذف گردیدهاند. در این روش server میداند که client در هر مرحله به چه منابعی نیاز دارد و برای آن ارسال مینماید.
همچنین باید اشاره کرد که HTTP2 برخلاف HTTP/1.1 داده ها را به صورت Binary جابجا میکند و به همین دلیل کارایی آن بسیار بیشتر میشود.
در این مقاله سعی بر این شد تا با HTTP2 و مزیت های آن آشنا شویم.
با ما همراه باشید.
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.