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-ի համար
// Կոնցեպտուալապես հարցումները կարող են ուղարկվել գրեթե միաժամանակ