HTTP یا hypertext transfer protocol، روشی است که کامپیوترها و سرورها برای درخواست و ارسال اطلاعات از آن استفاده میکنند. برای مثال زمانی که شما آدرس یک وبسایت را در مرورگر وارد میکنید، مرورگر یک درخواست HTTP به سرورهای میزبان آن سایت ارسال و پاسخ آن را در قالب محتوایی که مشاهده میکنید دریافت مینماید.
نخستین نسخه قابل استفاده HTTP در سال 1997 بوجود آمد. این نسخه به دلیل مراحل تکاملی مختلفی که طی نمود نهایتا HTTP/1.1./ نامگذاری شد. این نسخه همچنان در شبکه اینترنت تحت استفاده قرار میگیرد اما در سال 2015 نسخه جدیدی به نام HTTP/2 نیز ایجاد شد.
HTTP/2 مشکلات مختلفی که نسخه پیشین در حل آنها عاجز بود را رفع میکند. این نسخه از پروتکل سریعتر و بهینه تر از HTTP1.1. است. یکی از مهمترین دلایل سرعت بالاتر این نسخه توانایی اولویت بندی دادهها در طی بارگذاری صفحات است.
منظور از اولویتبندی چیست؟
اولویتبندی در اینجا به معنای ترتیب بندی محتوا در حین بارگذاری صفحات است. تصور کنید یک بازدیدکننده در یک سایت خبری قصد بازدید از یک مقاله را دارد. در این حالت کدام بخش از صفحه میبایست زودتر بارگذاری شود؟ تصویر بالای مقاله، متن یا بنر تبلیغاتی جانبی؟
اولیت بندی عاملی مهم در تعیین زمان بارگذاری یک صفحه به شمار میرود. برای مثال، ممکن است برخی منابع، مانند فایلهای پرحجم جاوا اسکریپت مانع از بارگذاری باقی محتویات صفحه پیش از خود شوند. در این حالت بازدید کننده گمان میکند صفحه اصلا لود نشده است و همین مورد باعث ترک صفحه توسط او میشود. به همین دلیل اگر بارگذاری محتویات و منابع حجیم به آخر موکول شود، غالب صفحه به سرعت برای کاربر قابل رویت خواهد بود.
تاثیر HTTP/2 بر روی عملکرد صفحات
در HTTP/2 ویژگی به نام اولویت بندی وزنی یا weighted prioritization وجود دارد. این قابلیت توسعه دهندگان را قادر میسازد تا ترتیب بارگذاری منابع و محتویات را کنترل کنند. در این نسخه از پروتکل زمانیکه کاربر درخواست مشاهده یک صفحه را ارسال میکند، سرور به جای اینکه دادهها را به صورت ترتیبی و یکی پس از دیگر بفرستد، چندین جریان داده را به صورت همزمان به کاربر ارسال میکند. این نوع از تحویل داده، multiplexing نام دارد. برنامهنویسان میتوانند به هر یک از این جریانهای اطلاعاتی یک ارزش وزنی بدهند و این وزن به سیستم کاربر اعلام میکند که کدام جریان میبایست اول بارگذاری شود. در HTTP/2 تمامی اطلاعات مورد نیاز جهت بارگذاری به صورت یکجا ارسال میشوند.
تفاوتهای اصلی HTTP1.1. و HTTP/2
Multiplexing: پروتکل HTTP/1.1 منابع را یکی پس از دیگری لود میکند و اگر یکی از موارد به درستی بارگذاری نشود، باقی منابع لود نخواهند شد. در مقابل HTTP/2 منابع را به صورت یکجا بارگذاری میکند. این کار از طریق تقسیم دادهها به پیامهایی با کدهای باینری و عددگذاری آنها صورت میگیرد تا سیستم کاربر اولویتها را بشناسد.
Server push: به صورت عادی، یک سرور تنها در زمان درخواست کاربر منابع و سایر محتوا را به سیستم او ارسال میکند. اما این مورد در صفحات امروزی که غالبا نیاز به بارگذاری چندین منبع مختلف دارند کارایی ندارد. HTTP/2 با قابلیتی به نام push منابع و محتوا را حتی پیش از درخواست کاربر برای او ارسال میکند. حتی پیش از این کار سرور طی پیامی محتویاتی که قرار است به کاربر ارسال کند را به اطلاع سیستم او میرساند.
Header compression: فایلهای کوچک طبیعتا سریعتر از فایلهای بزرگ بارگذاری میشوند. برای بهبود سرعت و عملکرد هردو پروتکل HTTP1.1 و HTTP/2 محتویات را به صورت فشرده در میآورند. اما نسخه HTTP/2 روش به روز تر HPACK را برای این منظور استفاده میکند. این روش اطلاعات اضافی موجود در پکتهای هدر HTTP را حذف مینماید و منجر به سبک شدن آن میشود. با توجه به تعدا پکتها در حین بارگذاری حتی یک صفحه، این مورد باعث افزایش سرعت محسوسی میگردد.
HTTP/3 چیست؟
HTTP/3 نسخه پیشنهادی بعدی پروتکل HTTP است. این نسخه هنوز به صورت گشترده در شبکه اینترنت مورد استفاده قرار نگرفته است اما در حال رشد و گشترش است. تفاوت عمده این نسخه با نسخههای پیشین در کار با QUIC به جای TCP است. QUIC یک پروتکل انتقال اطلاعات سریعتر و ایمن تر است که با توجه به ملزومات اینترنت مدرن طراحی شده است.