HTTP/2 nedir?
HTTP/2, RFC 7540 ile standartlaştırılmış, HTTP protokolünün önemli bir sürümüdür. HTTP/1.1'e kıyasla web performansını büyük ölçüde artırmak için ikili çerçeveleme, çoklama, başlık sıkıştırması ve sunucu gönderimi sunar.HTTP/2 ve HTTP/1.1 karşılaştırması
| Özellik | HTTP/1.1 | HTTP/2 |
|---|---|---|
| Biçim | Metin tabanlı | İkili |
| Bağlantılar | Birden çok (ana bilgisayar başına 6-8) | Tek, çoklanmış bağlantı |
| İstek işleme | Sıralı | Paralel akışlar |
| Başlık sıkıştırması | Yok | HPACK sıkıştırması |
| Sunucu gönderimi | Kullanılamaz | Desteklenir |
| Önceliklendirme | Yok | Akış öncelikleri |
HTTP/2 nasıl çalışır?
HTTP/1.1 (Head-of-Line Blocking):
Connection 1: Request A ──────────► Response A
Connection 2: Request B ──────────► Response B
Connection 3: Request C ──────────► Response C
(Multiple connections, sequential per connection)
HTTP/2 (Multiplexing):
Single Connection:
├── Stream 1: Request A ──► Response A
├── Stream 2: Request B ──► Response B
├── Stream 3: Request C ──► Response C
└── All interleaved on same connection
Temel özellikler
İkili çerçeveleme katmanı
HTTP/2 Frame Structure:
┌─────────────────────────────────────┐
│ Length (24 bits) │
├─────────────────────────────────────┤
│ Type (8 bits) │ Flags (8 bits) │
├─────────────────────────────────────┤
│ Stream Identifier (32 bits) │
├─────────────────────────────────────┤
│ Frame Payload (variable) │
└─────────────────────────────────────┘
HPACK başlık sıkıştırması
| Senaryo | HTTP/1.1 başlıkları | HTTP/2 başlıkları |
|---|---|---|
| İlk istek | ~800 bayt | ~800 bayt |
| Sonraki istekler | Her biri ~800 bayt | ~20-50 bayt (indeksli) |
Akış önceliklendirmesi
Priority Tree:
Root (connection)
├── CSS (weight: 256, high priority)
├── JavaScript (weight: 220)
└── Images (weight: 110, lower priority)
Sunucu gereksinimleri
| Sunucu | HTTP/2 desteği |
|---|---|
| nginx | 1.9.5+ |
| Apache | 2.4.17+ (mod_http2) |
| Node.js | 8.4+ (yerel) |
| IIS | Windows 10/Server 2016+ |
Performans yararları
- Daha düşük gecikme: Tek bağlantı, TCP el sıkışması yükünü ortadan kaldırır
- Daha iyi sıkıştırma: Tekrarlanan isteklerde başlık boyutunu %85-90 azaltır
- Paralel yükleme: Tüm kaynaklar aynı anda yüklenir
- Sunucu gönderimi: Tarayıcı istemeden önce kaynakları proaktif olarak gönderir
En iyi uygulamalar
1. TLS'i etkinleştirin: HTTP/2 pratikte HTTPS gerektirir (tarayıcılar bunu zorunlu tutar)
2. Alan adı parçalamayı azaltın: Birden fazla alan adı artık performansı düşürür
3. Dosyaları birleştirmeyi bırakın: Çoklama, paketlemeyi daha az gerekli kılar
4. Sunucu gönderimini dikkatle kullanın: Yalnızca kritik kaynakları gönderin
5. Performansı izleyin: HTTP/2'nin kendi kullanım senaryonuzu iyileştirdiğini doğrulayın
HTTP/2, ağ bağlantılarının daha verimli kullanılması sayesinde çoğu web sitesi için belirgin performans iyileştirmeleri sağlar.