آشنایی با HTTP/2 و پشتیبانی از HTTP/2 در وب سرورها

نسخه جدیدی از HTTP حالا وب را سریع‌تر خواهد کرد و این بزرگ‌ترین تغییر در این پروتکل ارتباطی از ۱۹۹۹ تا کنون است.

Hypertext Transfer Protocol  که بسیاری از ما با علامت مخصوص به آن یعنی http:// در آغاز هر آدرس آن را می‌شناسیم اتصالی بین مرورگر کاربر و سروری که وب‌سایت‌ را میزبانی می‌کند، برقرار می‌کند. این پروتکل توسط پدر اینترنت یعنی «سرتیم‌برنزلی» ابداع شده است.

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

آشنایی با HTTP/2 و پشتیبانی از HTTP/2 در وب سرورها

HTTP/2 چیست؟

HTTP/2 نسخه آینده HTTP است و بر اساس Google SPDY تولید شده که طراحی آن بر اساس سرعت بیشتر در دیده شدن صفحات وب و تجربه وب‌گردی است. این یک استاندارد جدید است و جایگزین استاندارد HTTP1.1 می‌شود که هم اکنون بیشتر سایت‌های اینترنتی از آن استفاده می‌کنند.

 

تفاوت آن‌ها چیست؟

HTTP/2 یک پروتکل مدرن است که سرعت مرور وب را افزایش می‌دهد و از روش‌های جدیدی برای انتقال دیتا بین مرورگر و سرور روی اینترنت بهره می‌گیرد.

HTTP/2 قابلیت انطباق با نسخه قبلی یعنی HTTP1.1 را دارد و تقریبا از همان تکنولوژی‌های مشابه اما به شکل بهینه‌تر استفاده می‌کند و به سرورها اجازه می‌دهد که محتواهای بیشتری نسبت به محتواهای درخواست شده را به کاربر ارسال کنند. این باعث می‌شود که کامپیوتر کاربر –  تا هنگام کامل شدن صفحه – مرتبا درخواست به سرور نفرستد.

همچنین مرورگرها می‌توانند در یک زمان چندین درخواست از یک بخش از اطلاعات را به چندین وب‌سایت به طور همزمان ارسال کنند و این باعث افزایش سرعت کامل شدن یک یا چند صفحه درخواست شده می‌شود.

 

آیا من اختلافی را مشاهده خواهم کرد؟

بله. صفحات وب در مقایسه با HTTP1.1 با سرعت بیشتری لود یا کامل خواهند شد. البته افزایش سرعت اینترنت کاربر هم به معنی افزایش سرعت لود شدن صفحات است اما افزایش سرعت این پروتکل به صفحات وب و مرورگرها نسبت به سرعت کلی اینترنت کاربر برتری دارد و سایت‌های مدرن که انبوهی از عکس و متن و دیتا دارد به شکل ملموسی سریع‌تر در دسترس خواهند بود.

پروتکل جدید همچنین دیدن وب از طریق موبایل را هم دچار تحول خواهد کرد و باعث سرعت بالای وب ا زطریق موبایل می‌شود.

 

آیا من باید کاری انجام دهم؟

نه. از جهت کاربر نیاز به هیچ تغییری نیست. در آدرس همچنان http:// دیده می‌شود و خود مرورگرها به طور خودکار از نسخه ۱.۱ به نسخه ۲ سوییچ می‌کنند. گوگل کروم و برخی از دیگر سرویس‌های گوگل  در طی دو سال گذاشته از پروتکل SPDY استفاده می‌کردند که احتمالا متوجه آن نشدید.

 

یک ارتباط برای چندین درخواست

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

 

فشرده سازی Header با HPACK

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

فشرده سازی به تسهیم نمودن درخواست ها کمک می کند، زیرا درخواست ها کوچکتر می باشند. این امر کاربران را قادر می سازد تا تعداد درخواست های زیادی را در اولین پکت های ارسالی خود به سرور ارسال نمایند، در حالیکه پنجره ی کنترل جریان TCP هنوز کوچک می باشد.

فشرده سازی Header با HPACK

فشرده سازی Header با HPACK

Server Push

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

در نسخه ی جدید  HTTP مفهوم جدیدی به نام “Push” معرفی شده است – سرور به درخواست هایی پاسخ ارسال می کند که هنوز ایجاد نشده اند. این عملیات با استفاده از پیش بینی عملکرد کاربر انجام می شود. این کار باعث می شود تا سرورها بتوانند مزایای عکس العمل مشابه کدنویسی بین خطوط را ارائه دهند اما به صورتیکه کاربران بتوانند این داده ها را کش کرده و در صفحات دیگر استفاده کنند.

چگونه از HTTP/2 استفاده کنیم؟

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

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

در مورد push چطور؟

از انجاییکه push یک قابلیت جدید در HTTP/2 می باشد، یک سری API های جدیدی هستند که شما می بایست آنها را فراخوانی کنید تا بتوانید از مزایای آنها استفاده نمایید. شما با استفاده از API ها URL ها و درخواست های انتخابی را در header های سفارشی لحاظ می کنید که حدس می زنید کاربران آنها را فراخوانی خواهند کرد. اگر push پشتیبانی شود دو اتفاق رخ می دهد:

  • یک PUSH_PROMISE به کاربر ارسال می شود تا کاربر بررسی کند آیا منابع مربوطه در کش موجود می باشد یا خیر
  • یک درخواست جدید به صف درخواست ها برای منابع push شده قرار می گیرد.

اگر ارتباط برقرار شده از push پشتیبانی نکند (کاربر آنرا غیرفعال نموده یا از HTTP/1.1 استفاده می کند) فراخوانی کاری انجام نداده و باز می گردد. این بدان معنا می باشد که شما بدون نگرانی از بروز مشکلی می توانید از این API استفاده کنید و حتی اگر کاربران از آن پشتیبانی نکنند مشکلی برای وب سایت و بارگذاری آن پیش نمی آید.

 

HTTPS چه خواهد شد؟

نسخه امن وب که برای بانک‌ها، فروشگاه‌ها، ایمیل و دیگر سرویس‌ها به کار می‌رود هم به طور کامل توسط HTTP/2  پشتیبانی می‌شود و هیچ تغییری در این زمینه ایجاد نخواهد شد.

HTTP/2  البته نیاز به نسخه بهبود یافته TLS1.2 ( لایه امنیتی انتقال) دارد که اولین بار در سال ۲۰۰۸ استاندارد شد و امنیت بیشتری را نسبت به نسخه‌های قبلی ارایه می‌دهد و امروزه توسط بسیاری از سرویس‌ها مورد استفاده قرار می‌گیرد.

 

پشتیبانی از HTTP/2 در وب سرورها

مایکروسافت ویندوز

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

لینوکس

وب سرور Apache:

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

وب سرور Nginx:

نسخه ی ۱٫۹٫۵ وب سرور nginx از HTTP/2 به صورت کامل پشتیبانی می کند.

وب سرور LiteSpeed:

نسخه ی ۵٫۰ وب سرور LiteSpeed از HTTP/2 پشتیبانی می کند.

آشنایی با HTTP/2 و پشتیبانی از HTTP/2 در وب سرورها

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

نوزده + هفده =