Middle
Koje su razlike između protokola HTTP/1 i HTTP/2?
sobes.tech АИ
Одговор од АИ
Основне разлике између 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
// Концептуално захтеви могу бити послати скоро истовремено