Sobes.tech
Middle

Тафовутҳои протоколҳои HTTP/1 ва HTTP/2 чист?

sobes.tech AI

Ҷавоб аз AI

اصول تفاوت‌های اصلی بین HTTP/1.1 و HTTP/2:

  • مالتی‌پلیکسی:

    • HTTP/1.1: پردازش متوالی درخواست‌ها بر روی یک اتصال. برای بارگذاری همزمان، نیاز به چندین اتصال TCP بود.
    • HTTP/2: مالتی‌پلیکسی بر روی یک اتصال TCP. امکان ارسال همزمان چندین درخواست و دریافت پاسخ‌ها، بدون مسدود کردن یکدیگر.
  • فشرده‌سازی هدرها (HPACK):

    • HTTP/1.1: هدرها به صورت غیر فشرده منتقل می‌شدند، که در صورت تعداد زیاد درخواست‌ها، ممکن است زائد باشد.
    • HTTP/2: فشرده‌سازی هدرها با استفاده از الگوریتم HPACK. اندازه داده‌های منتقل شده را کاهش می‌دهد.
  • اولویت‌بندی جریان‌ها:

    • HTTP/1.1: امکان اولویت‌بندی وجود نداشت.
    • HTTP/2: مشتری می‌تواند اولویت‌هایی برای جریان‌های مختلف داده تعیین کند، که بر ترتیب پردازش آن‌ها در سرور تأثیر می‌گذارد.
  • پوش سرور (Server Push):

    • HTTP/1.1: مشتری باید هر منبع (CSS، JS، تصاویر) را صراحتاً درخواست کند.
    • HTTP/2: سرور می‌تواند منابعی را که فکر می‌کند برای نمایش صفحه نیاز است، قبل از درخواست مشتری، ارسال کند.
  • پروتکل دودویی:

    • HTTP/1.1: پروتکل متنی، نسبتاً آسان برای خواندن.
    • HTTP/2: پروتکل دودویی، کارآمدتر برای پارس کردن و انتقال.

جدول مقایسه:

ویژگی‌ها HTTP/1.1 HTTP/2
مالتی‌پلیکسی ندارد (نیاز به چند TCP) بله (یک TCP)
فشرده‌سازی هدرها ندارد بله (HPACK)
اولویت‌بندی جریان‌ها ندارد بله
پوش سرور ندارد بله
فرمت پروتکل متنی دودویی
مشکل بلوک خط سر (Head-of-Line Blocking) وجود دارد (برای یک TCP) کاهش یافته به لطف مالتی‌پلیکسی

مثال مالتی‌پلیکسی (مفهومی):

// HTTP/1.1: درخواست‌های متوالی
fetch('/resource1')
  .then(() => fetch('/resource2'))
  .then(() => fetch('/resource3'));

// HTTP/2: درخواست‌های همزمان بر روی یک اتصال
// در مرورگر این به صورت خودکار برای HTTP/2 انجام می‌شود
// درخواست‌ها تقریباً همزمان ارسال می‌شوند