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 блокировкасы | Бар (бир TCP үчүн) | Азайтылган мултиплексинг менен |
Мултиплексингдин мисалы (концептуалдуу):
// HTTP/1.1: Кийинки суроолор
fetch('/resource1')
.then(() => fetch('/resource2'))
.then(() => fetch('/resource3'));
// HTTP/2: Бир байланышка бир нече суроо
// Браузерде автоматтык түрдө HTTP/2 үчүн ишке ашырылат
// Концептуалдуу түрдө суроолор дээрлик бир убакта жөнөтүлүшү мүмкүн