Middle
Koja je razlika između HTTP/1 i HTTP/2?
sobes.tech АИ
Одговор од АИ
Основне разлике:
- Мултиплексирање (Multiplexing). HTTP/2 омогућава слање и пријем више захтева и одговора истовремено преко једне TCP везе. HTTP/1.1 је захтевао одвојену везу за сваки захтев/одговор (осим механизма
pipelining, који је имао ограничења). - Заглавља (Header Compression). HTTP/2 користи компресију заглавља помоћу алгоритма HPACK, како би смањио њихову величину и количину података који се преносе. У HTTP/1.1, заглавља се шаљу у текстуалном облику.
- Приоритизација токова (Stream Prioritization). У HTTP/2 клијент може да одреди приоритет за различите токове (захтеве/одговоре), што омогућава серверу да оптимизује редослед испоруке података. HTTP/1.1 нема тај механизам.
- Серверски Push (Server Push). HTTP/2 омогућава серверу да шаље ресурсе клијенту пре него што их клијент затражи, засновано на претпоставци о њиховој потреби за приказивањем странице. У HTTP/1.1, клијент мора јасно да затражи сваки ресурс.
- Формат фрејмова (Binary Framing). HTTP/2 преноси податке у бинарном формату (фрејмови), што олакшава парсирање и повећава ефикасност у поређењу са текстуалним форматом HTTP/1.1.
Поређење у табели:
| Карактеристика | HTTP/1.1 | HTTP/2 |
|---|---|---|
| Веза | Једна веза за сваки захтев (без pipelining) |
Једна веза за више токова |
| Мултиплексирање | Нема (или ограничено pipelining) |
Да |
| Компресија заглавља | Нема | HPACK (бинарна компресија) |
| Приоритизација токова | Нема | Да |
| Серверски Push | Нема | Да |
| Формат података | Текст | Бинарни (фрејмови) |
| Head-of-Line блокирање | Постоји | Делимично решава се мултиплексирањем |
Пример захтева у HTTP/1.1:
// GET /index.html HTTP/1.1
// Host: example.com
// User-Agent: curl/7.68.0
// Accept: */*
Пример делимичног приказа података у HTTP/2 (размена фрејмова је сложенија и није тако једноставно приказати):
// У HTTP/2 комуникација се одвија на нивоу фрејмова (HEADERS, DATA и др.),
// који су бинарни и скривени за корисника на нивоу апликације.
// Представљање у једноставном тексту је тешко.
// Заглавља се компресују и преносе у HEADERS фрејму.
// Тело одговора се преноси у DATA фрејмовима.