3 dəqiqəyə oxunur
HTTP və HTTP/2: əsas fərqlər
HTTP/1.1 ilə HTTP/2 arasındakı əsas fərqləri ətraflı araşdırırıq: multipleksləşdirmə, başlıqların sıxılması, Server Push və onların saytların sürətinə təsiri.

HTTP/1.1-in problemi
HTTP müasir vebin təməlidir. 1997-ci ildə təqdim olunduğu vaxtdan bəri HTTP/1.1 hər gün milyardlarla sorğuya xidmət edir. Lakin onun arxitekturasında fundamental bir məhdudiyyət var: o, hər TCP bağlantısında ciddi “bir sorğu — bir cavab” modeli ilə işləyir.
Bu, növbənin başında bloklanma (Head-of-Line Blocking, HOL) adlanan məşhur darboğaz yaradır: brauzer cari sorğunun cavabını almayana qədər növbəti sorğunu göndərə bilmir. Bunu aşmaq üçün brauzerlər hər domen üçün 6–8 paralel bağlantı açır, proqramçılar isə müxtəlif üsullara əl atırlar:
CSS və JavaScript fayllarını bir fayla birləşdirirlər;
sorğuların sayını azaltmaq üçün şəkil spraytlarından istifadə edirlər;
resursları bir neçə domen arasında paylayırlar (domain sharding).
Bu cür həll yolları layihəni və onun dəstəyini mürəkkəbləşdirir. HTTP/2 məhz bu problemləri həll etmək üçün yaradılıb.
HTTP/2 nə gətirir
Multipleksləşdirmə — əsas yenilik
HTTP/2-nin ən böyük üstünlüyü multipleksləşdirmədir. Artıq bir TCP bağlantısı eyni anda yüzlərlə sorğu və cavabı ötürə bilir. Onların hər biri unikal axın identifikatoru ilə işarələnmiş kiçik binar freymlərə bölünür, buna görə də server və klient onları sərbəst şəkildə növbələşdirə bilir.
Bu, HTTP səviyyəsində HOL bloklanmasını aradan qaldırır və domain sharding, faylların birləşdirilməsi kimi üsulları tamamilə lazımsız edir.
Binar protokol
HTTP/1.1 mətn əsaslı protokoldur: başlıqlar və mesajın məzmunu oxunaqlı sətirlər şəklində ötürülür. HTTP/2 isə kompakt binar formata keçib. Nəticədə mesajların emalı xeyli sürətli, səmərəli və xətalara daha davamlı olub.
HPACK ilə başlıqların sıxılması
HTTP/1.1-də Cookie, User-Agent və Authorization kimi başlıqlar hər sorğu ilə tam şəkildə göndərilir. Çox vaxt bu, təkrar-təkrar ötürülən yüzlərlə baytdır.
HTTP/2 başlıqları HPACK alqoritmi ilə sıxır. O, əvvəl göndərilmiş başlıqların ortaq cədvəlini saxlayır və yalnız dəyişiklikləri ötürür. Adətən bu, başlıqların həcmini 85–95% azaldır.
Server Push
HTTP/2 serverlərə resursları klient onları istəməmişdən əvvəl göndərmək imkanı verdi. Məsələn, brauzer HTML səhifəni istədikdə server lazım olacağını bildiyi CSS və JS fayllarını dərhal göndərə bilər.
Praktikada Server Push-u düzgün qurmaq çətin oldu və o, həmişə sürəti artırmırdı. HTTP/3-də bu imkandan faktiki olaraq imtina edilib.
Axınların prioritetləşdirilməsi
HTTP/2 klientə hər axına prioritet səviyyəsi təyin etməyə imkan verir. Brauzer CSS-in fon şəkillərindən daha vacib olduğunu bildirə bilər və server ötürmə qabiliyyətini daha ağıllı bölüşdürür.
Müqayisə
Format: HTTP/1.1 — mətn, HTTP/2 — binar.
Bağlantılar: HTTP/1.1 — 6–8 paralel bağlantı, HTTP/2 — bir multipleks bağlantı.
Başlıqlar: HTTP/1.1-də tam təkrarlanır, HTTP/2-də HPACK ilə sıxılır.
Server Push: HTTP/1.1-də yoxdur, HTTP/2-də var.
Prioritetləşdirmə: HTTP/1.1-də yoxdur, HTTP/2-də var.
Şifrələmə: HTTP/1.1-də məcburi deyil, HTTP/2-də praktiki olaraq məcburidir (TLS).
Real performansa təsiri
HTTP/2-yə keçid adətən səhifələrin yüklənmə müddətini 10–50% qısaldır, xüsusən də çoxlu resursu olan səhifələrdə. Ən böyük qazanc yüksək gecikməli şəbəkələrdə — mobil internetdə və coğrafi baxımdan uzaq serverlərlə işləyərkən hiss olunur.
Ən xoşu isə odur ki, tətbiqin kodunu dəyişmək lazım deyil. HTTP/2 nəqliyyat səviyyəsində işləyir, ona görə də adətən onu serverdə və ya CDN-də aktivləşdirmək kifayətdir.
HTTP/2-dən istifadə etdiyinizi necə yoxlamaq olar
Brauzerdə DevTools-u açın (F12), Network bölməsinə keçin və Protocol sütununu aktivləşdirmək üçün sütun başlıqlarının üzərində sağ klikləyin. HTTP/2 bağlantıları üçün orada h2 göstəriləcək. Müasir saytların və CDN-lərin əksəriyyəti artıq HTTP/2 üzərindən işləyir.
Nəticə
HTTP/2 böyük irəliləyişdir. Multipleksləşdirmə, başlıqların sıxılması və binar protokol saytların daha sürətli yüklənməsini təmin edir və proqramçılardan bir sətir kodu belə dəyişməyi tələb etmir. Əgər infrastrukturunuz hələ də HTTP/1.1 üzərində işləyirsə, yeniləmə vaxtıdır.
