Ana içeriğe geç
Kitap 11 · AğlarSayfa 11 / 37

HTTP/2

Okunuşu
eyç ti ti pi tu
Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/http-2

Kısaca

HTTP/2, birçok istek ve yanıtı kompakt bir ikili biçimde tek bağlantı üzerinden aynı anda gönderen ve sayfaları hızlandıran, HTTP'nin ikinci büyük sürümüdür.

HTTP/2 nedir?

HTTP/1.1'de bir bağlantı aynı anda tek bir istek taşır; bu yüzden tarayıcılar site başına altıya kadar bağlantı açıp yine de sırada bekliyordu, geliştiriciler de dosyaları paketlemek ve görsel sprite'ları gibi numaralara başvuruyordu. Google'ın deneysel SPDY protokolüne dayanan ve 2015'te standart olarak yayımlanan HTTP/2, aynı metotları, durum kodlarını ve başlıkları koruyarak bu darboğazı ortadan kaldırır.

Temel özelliği çoklamadır (multiplexing). Mesajlar her biri bir akış (stream) kimliğiyle etiketlenen ikili çerçevelere bölünür; böylece düzinelerce istek ve yanıt birbirini beklemeden tek bir TCP bağlantısı üzerinde iç içe geçebilir. HPACK, neredeyse her istekte tekrarlanan başlıkları sıkıştırır; akışlar da önemli kaynakların önce gelmesi için öncelik taşıyabilir.

Uygulamalar için kod düzeyinde hiçbir şey değişmez: bir fetch çağrısı ya da bir sunucu route'u iki sürümde de aynı çalışır; tarayıcı ile sunucu da HTTP/2'yi TLS el sıkışması sırasında otomatik olarak anlaşır. Tarayıcılar HTTP/2'yi yalnızca HTTPS üzerinden kullanır; bu yüzden onu açmak genellikle sunucuda ya da CDN'de TLS'i açmak demektir. Dosyaları istenmeden önce göndermeye yarayan erken bir özellik olan server push az kullanıldı ve sonradan tarayıcılardan kaldırıldı.

Sık yapılan bir yanlış, HTTP/2'nin bütün beklemeleri ortadan kaldırdığını düşünmektir. HTTP düzeyindeki sıra başı tıkanmasını (head-of-line blocking) çözer, ama her şey hâlâ tek bir TCP bağlantısı üzerinde akar; bu yüzden kaybolan tek bir paket bütün akışları bekletir. HTTP/3 bunu, akışların birbirinden bağımsız olduğu UDP üzerindeki QUIC ile çalışarak çözer.

Önemli noktalar

  • HTTP/2, Google'ın SPDY'sine dayanarak 2015'te standartlaştırıldı.
  • Çoklama, birçok isteği tek bir bağlantı üzerinden aynı anda gönderir.
  • İkili çerçeveler ve HPACK başlık sıkıştırması kullanır.
  • Tarayıcılar onu yalnızca HTTPS üzerinden kullanır; uygulama kodu değişmez.
  • TCP düzeyindeki sıra başı tıkanması kalır; QUIC üzerindeki HTTP/3 bunu çözer.

Örnek

Bir sitenin hangi HTTP sürümünü kullandığını kontrol etmekbash
# Ask for HTTP/2 and print the protocol that was negotiated
curl -sI --http2 https://example.com -o /dev/null -w '%{http_version}\n'
# 2

# nginx: enable HTTP/2 on the TLS listener
#   listen 443 ssl;
#   http2 on;

Sık sorulan sorular

HTTP/1.1 ile HTTP/2 arasındaki fark nedir?

HTTP/1.1 metin tabanlıdır ve bağlantı başına aynı anda tek bir isteği ele alır. HTTP/2 ise ikilidir, başlıkları sıkıştırır ve birçok isteği tek bir bağlantı üzerinden çoklar; bu da özellikle çok dosyalı sayfalarda gecikmeyi azaltır.

HTTP/2 HTTPS gerektirir mi?

Standart şifresiz HTTP/2'ye izin verir, ama bütün büyük tarayıcılar onu yalnızca TLS üzerinden destekler; bu yüzden pratikte HTTPS gerektirir.

HTTP/2 ile dosyaları hâlâ paketlemeli miyim?

Daha az agresif şekilde. Çok sayıda küçük dosya artık pahalı değildir; bu yüzden kodu sayfaya göre bölmek iyi çalışır, ama paketleme yine de sıkıştırmaya yardım eder ve çok derin import zincirlerini önler.

İlgili sayfalar

Kaynaklar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar