Hypertext Transfer Protocol (HTTP), internet kullanıcılarının web sitesi bilgilerini değiş tokuş etmesine olanak tanıyan bir dizi standarttır. 1991’de tanıtıldığından bu yana dört HTTP sürümü geliştirilmiştir.
HTTP/2, 2015 yılında HTTP/1.1 protokolüne büyük bir revizyon olarak piyasaya sürülmüştür ve hızla ilgili önemli iyileştirmeler meydana gelmiştir. Bu protokol özellikle kaynak açısından yoğun web sayfalarında sayfa yükleme hızını artırmak ve yuvarlanma süresini (RTT) azaltmak için SPDY protokolünden türetilmiştir.
Bu yazımızda yeni protokolün neden gerekli olduğu, SPDY’den HTTP/2’ye evrimi, HTTP/1.1 ile farkları ve bir CDN’nin (İçerik Dağıtım Ağı) içeriğinizi HTTP/2 ile uyumlu hale getirmede nasıl yardımcı olabileceği ele alınacaktır. Aynı zamanda sitenizin HTTP/2 ile uyumlu olup olmadığını test etme imkanınızda olacaktır.
HTTP/2 Test
HTTP/2 üzerinde çalışan sitelerin SEO konusunda hız ve güvenlik parametrelerinden dolayı daha yetenekli olduğunu belirtmeliyiz.
SPDY’den HTTP/2’ye Geçiş
HTTP/1.1, 15 yılı aşkın bir süredir standart protokol olan üçüncü HTTP sürümüydü. Kalıcı bağlantılar ile performansı artırmayı başarmış ve GET, HEAD, PUT ve POST gibi standart istekler için temel oluşturmuştu.
Ancak web siteleri büyüyüp ve daha yoğun kaynak kullanmaya başladıkça HTTP/1.1’in sınırlamaları belirginleşti. Özellikle, her bir TCP bağlantısı için yalnızca bir açık istek kullanması 1.1’de sayfa yükleme sürelerini yavaşlatan ciddi bir ek yük oluşturuyordu.
2010 yılında Google, HTTP’nin istek ve yanıtları nasıl işlediğini değiştirmek amacıyla SPDY protokolünü tanıttı. SPDY’nin odak noktası TCP pipelining aracılığıyla gecikmeyi azaltmak ve zorunlu sıkıştırma gibi özellikler sunmaktı.
HTTP/2 başlangıçta SPDY’ye dayanılarak geliştirilse de, sabit başlık sıkıştırma algoritması gibi benzersiz özellikleri eklemek için hızla değiştirildi. Bunun ardından Google, SPDY desteğini kaldırarak HTTP/2’yi destekleyeceğini açıkladı.
HTTP/1.1 ve HTTP/2 Protokollerinin Farkları
Özellik | HTTP/1.1 | HTTP/2 |
---|---|---|
Multiplexing | Yok – Her istek için ayrı TCP bağlantısı gerekir | Var – Tek TCP bağlantısı üzerinden eşzamanlı çoklu istek/yanıt |
Header Sıkıştırma | Yok – Headers düz metin olarak gönderilir | HPACK sıkıştırma ile header boyutu %80’e kadar azaltılır |
Veri İletimi | Sıralı ve bloke edici | Paralel ve non-blocking |
Server Push | Yok | Var – Server istemci talep etmeden kaynakları gönderebilir |
HOL Blocking | Var – Önceki istek tamamlanana kadar yeni istek bekler | Yok – Stream’ler bağımsız çalışır |
Binary Protocol | ASCII formatı | İkili format – daha verimli parsing |
Stream Önceliği | Yok | Var – Kaynakların önceliğini belirleyebilme |
Güvenlik | TLS opsiyonel | TLS önerilen standart |
Bağlantı Yönetimi | Connection: keep-alive ile yönetilir | Varsayılan olarak kalıcı bağlantı |
Performans | Temel düzeyde | 50-70% daha hızlı sayfa yükleme |
HTTP/2 Uygulaması ve CDN’nin Rolü
Google’ın SPDY protokolüne desteğini sona erdirme kararıyla beraber web siteleri RTT’yi azaltmak ve sayfa yükleme sürelerini hızlandırmak için HTTP/2’ye geçişini zorunlu hale getirmiştir.
Ancak HTTP/2’ye geçiş, bazı karmaşık adımları içerebilir:
- HTTPS Uyumluluğu: TLS’ye yapılan yeni uzantı, bir sitenin önce HTTPS ile uyumlu hale getirilmesini gerektirir.
- Sunucu Yükseltmeleri: Tüm sunucuların HTTP/1.1’den HTTP/2’ye yükseltilmesi gerekir. Bu işlem karmaşık ve hata yapmaya açık olabilir.
- Hata Düzeltmeleri: HTTP/1.1 hataları, HTTP/2’ye geçişte sorunlara neden olabilir. Bu, geliştiricilerden yeni çözümler üretmelerini gerektirir.
Bu noktada CDN’ler, kullanıcılar ve sunucular arasında bir aracı görevi üstlenerek süreci kolaylaştırır. Örneğin, Imperva CDN, sunucularınızı herhangi bir manuel yükseltmeye gerek kalmadan otomatik olarak HTTP/2 ile uyumlu hale getirir.
Sadece Türkçe bir siteniz ve Türkiye geneli ziyaretçiniz varsa CDN hızlandırmaktan ziyade yavaşlatabilir. CDN hız etkisini CDN öncesi ve sonrası olarak yapın.

Örnek Senaryo
Örnek Konusu : 10 MB toplam ağırlığı olan 100 dosyanın sunucudan istemciye yüklenme süresinin tartışmasıdır. Bu örnek olay verisinde Chatgpt’den yardım aldık.
HTTP/1.1 ile Yükleme
- Her dosya için ayrı istek: HTTP/1.1’de her dosya bir TCP bağlantısı üzerinden indirilir. Tarayıcılar genellikle aynı anda 6 paralel bağlantı açar.
- 100 dosyanın indirilmesi için sürekli bağlantı açma/kapama süreçleri yaşanır.
- Bağlantı başlatma (TCP el sıkışması) ve gecikme süreleri (RTT) dosya sayısı arttıkça yükleme süresini artırır.
- Yavaş başlama etkisi: Her TCP bağlantısı, başlangıçta sınırlı bant genişliği kullanır ve zamanla hızlanır. Bu da yükleme sürelerini uzatır.
- Başlık ek yükü: Her dosya için ayrı HTTP başlıkları iletilir, bu da toplam veri boyutunu artırır.
Süre Tahmini
- Gecikme (RTT): ~50 ms (örnek olarak alınmıştır).
- Toplam başlatma süresi: 100 dosya ÷ 6 paralel bağlantı ≈ 17 tur.
- Sadece bağlantı başlatma süreleri: 17 x 50 ms = 850 ms.
- Gerçek veri aktarımı + ek yük: 10 MB veri + başlıklar ≈ 1.2-1.5 saniye.
- Toplam süre: ~2-2.5 saniye.
HTTP/2 ile Yükleme
Tek bağlantı: HTTP/2, tüm dosyaları tek bir TCP bağlantısı üzerinden aktarır. Bu, TCP bağlantı başlatma ek yükünü ortadan kaldırır.
- Multiplexing (Çoklu Akış): Aynı bağlantı üzerinde dosyalar paralel olarak iletilir. Bu, dosyaların aynı anda indirilmesine olanak tanır.
- Başlık sıkıştırması: HTTP/2, HPACK başlık sıkıştırması kullanarak HTTP başlıklarının boyutunu küçültür.
- Daha az gecikme: RTT gecikmeleri çoklu akış sayesinde minimize edilir.
Süre Tahmini
- Bağlantı başlatma süresi: Tek bir bağlantı için RTT = 50 ms.
- Gerçek veri aktarımı: 10 MB veri ≈ 1 saniye (100 Mbps bağlantıda).
- Toplam süre: ~1-1.1 saniye.
Sonuç
Buradaki tüm incelememizde hem hız hem güvenlik konusunda HTTP/2 çok fazla avantaja sahip. Arama motoru optimizasyonu konusunda da hız ve güvenlik temelli iyileştirmelerinden dolayı HTTP/2 tercih edilmelidir.