نگارش جدید HTTP یعنی HTTP/2، بعد از ۲۰ سال یک ارتقا اصلی و بنیادی پس از HTTP/1.1 است. با HTTP/2 تاثیر Latency و ارتباط ها در وب سرورها کاهش می یابد. در واقع HTTP/2 یک طراحی مجدد بر روی شماتیک کارکرد HTTP و نحوه جریان ارتباط های TCP می باشد. پیشرفت اصلی HTTP/1.1 استفاده از ارتباط های مداوم جهت پاسخگویی چند درخواست در یک ردیف بود. در HTTP/2 یک ارتباط مداوم مورد استفاده قرار می گیرد تا چندین درخواست همزمان را پاسخ دهی کرد. در این بین HTTP/2 چندین قابلیت مجزای دیگر را نیز معرفی کرده است که این امکان را فراهم نموده تا بازدهی HTTP را در شبکه بهبود بخشد.

منظور از یک ارتباط برای چندین درخواست در HTTP2 چیست؟

هر ارتباط TCP برای راه اندازی نیاز به طی نمودن یک مسیر دایره وار دارد. اگر شما از رمزنگاری استفاده می کنید، برقرار ارتباط TLS یک الی دو مسیر دایره وار مازاد نیز طی می کند. تمام این موارد قبل از تبادل اولین بایت پاسخ بین سرور و مرورگر انجام می شود. به جای ایجاد یک ارتباط جدید با استفاده از ارتباطی که از قبل ایجاد شده این عملیات بالا دستی می تواند تنها یک بار انجام شود و بین ارتباط های آتی به اشتراک گذارده شود. در ادامه ی کار این اشتراک گذاری باعث به حداقل رساندن زمان برقراری ارتباط ها می شود. HTTP/2 زمان انتظار برای آغاز یک ارتباط را بسیار کاهش داده و دیگر درخواست ها در صف برای انجام عملیات Handshake با سرور باقی نمی مانند. همچنین ارتباط ها تا زمان به پایان رسیدن ارتباط قبلی یا idle شدن آنها صبر نمی کنند. از انجاییکه یک ارتباط بین چندین درخواست تسهیم شده، درخواست ها می توانند به صورت آنی ارسال شده و دیگر برای تکمیل شدن دیگر درخواست ها منتظر نمانند.

HTTP2.png

شاید شما همین الان هم از آن استفاده کرده باشید! از آنجاییکه تقریبا همه ی مرورگرهای امروزی از HTTP/2 در آخرین بروزرسانی خود استفاده می کنند و داده های آماری هم نشان می دهند که بیش از ۵۰% کاربران در حال استفاده از مرورگر هایی هستند که HTTP/2 را پشتیبانی می کنند.

در نظر داشته باشید که  HTTP/2 زمانی مورد استفاده قرار می گیرد که کاربر و سرور هر دو آنرا پشتیبانی کنند. در برخی از وب سرور ها تلاش شده تا HTTP/2 به صورت پیاده سازی شود که هرچه بیشتر شفاف باشد و شما نیازی به اعمال تغییرات خاصی جهت راه اندازی آن نداشته باشید. برخی از بهینه سازی های HTTP/1.1 (مانند Domain sharding، کدنویسی بین خطوط و غیره) دیگر در HTTP/2 پشتیبانی نمی شوند، بنابراین شما می بایست برنامه ریزی نمایید تا در آینده این بهینه سازی ها را از وب سایت خود حذف نمایید.

محدودیت‌های HTTP2

SPDY سیاست‌های محدودتری را بر امنیت و رمزنگاری ضروری SSL در تمام ‌اتصال‌ها اعمال می‌کند. HTTP2 نیازی به رمزنگاری ندارد، اما بسیاری از سرویس‌ها بدون خرید گواهینامه SSL به HTTP2 سرویس نمی‌دهند.
پشتیبانی از HTTP2 درمایکروسافت ویندوز وب سرور IIS

مایکروسافت اعلام نموده در IIS ویندوز ۱۰ و ویندوز سرور ۲۰۱۶ از HTTP/2 پشتیبانی می شود. همچنین در حال حاضر HTTP/2 در IIS تنها بر روی TLS قابل استفاده می باشد.
پشتیبانی از HTTP2 در لینوکس

وب سرور Apache

نسخه ی ۲.۴.۱۲ وب سرور آپاچی با استفاده از ماژول mod_h2 از مزیت HTTP/2 پشتیبانی می کند. البته نصب چندین پچ نرم افزاری بر روی وب سرور برای پشتیبانی از ماژول مذکور مورد نیاز است. از نسخه ی ۲.۴.۱۷ به بعد این پچ ها به صورت توامان در آپاچی ارائه می شوند. این ماژول در حال حاضر به mod_http2 تغییر نام یافته است.

برای مدت طولانی می باشد که از فشرده سازی داده ها پشتیبانی می کند. اما Header ها به صورت فشرده نشده و در قالب متن با فراوانی و حشو زیاد ارسال می شوند. (درخواست های خیلی از header های طولانی با داده های کاملا یکسان ارسال می شوند!) HTTP/2 قابلیت جدیدی با نام HPACK را معرفی کرده است، این قابلیت یک طرح کلی برای هدرهای HTTP است که درخواست های متعدد و حشو را کاهش می دهد.