HTTP/2: Sadece SSL Kurunca Web Sitemiz Neden Hızlanıyor?
HTTP/2: Sadece SSL Kurunca Web Sitemiz Neden Hızlanıyor?
Web geliştirmede performans denince aklımıza hemen sorgu optimizasyonu, caching veya dosya küçültme gelir. Ancak bazen yaptığınız en büyük devrim, veriyi taşıma biçiminizi değiştirmektir. Bugün, çoğumuzun farkında olmadan kullandığı ama web’in hız standartlarını değiştiren HTTP/2 protokolünden, tarihçesinden ve bunun .NET dünyasındaki yansımasından bahsedeceğim.
Bu İşin Mimarı Kim? (SPDY'den HTTP/2'ye)
HTTP/1.1 protokolü 1997’den beri hayatımızdaydı. Ancak 2000’lerin sonunda web siteleri ağırlaşmaya, görseller ve scriptler devasa boyutlara ulaşmaya başladı. Bu hantallığı fark eden Google, 2009 yılında kendi laboratuvarlarında SPDY (Speedy) adında deneysel bir protokol geliştirdi.
Google'ın amacı basitti: Sayfa yükleme sürelerini %50 hızlandırmak. SPDY o kadar başarılı oldu ki, internet standartlarını belirleyen IETF (Internet Engineering Task Force) bu projeyi temel alarak 2015 yılında HTTP/2'yi resmi standart olarak ilan etti. Yani bugün kullandığımız bu hızın arkasında Google'ın attığı o cesur adım yatıyor.
Neden İhtiyaç Duyuldu? (The Problem: Head-of-Line Blocking)
Eskiden (HTTP/1.1 zamanlarında) tarayıcılar bir web sitesine girdiğinde, her bir görsel, her bir CSS veya JS dosyası için sıraya girerdi. Bir dosya inmeden diğeri başlamazdı. Eğer sıradaki ilk dosya büyükse veya yavaş yükleniyorsa, arkasındaki tüm dosyalar onu beklemek zorundaydı. Biz buna "Head-of-Line Blocking" diyoruz.
Geliştiriciler bu tıkanıklığı aşmak için "bütün JS’leri tek dosyada toplayalım (Bundling)", "resimleri tek bir karede birleştirelim (Sprite)" veya "verileri farklı subdomain'lere dağıtalım (Domain Sharding)" gibi taklalar atardı. HTTP/2 ile bu devir kapandı.
HTTP/2 (h2) sayesinde artık tek bir TCP bağlantısı üzerinden, tüm dosyalar aynı anda birbirini beklemeden akabiliyor. Buna teknik tabiriyle Multiplexing diyoruz.
"SSL Yoksa Hız Da Yok" Kuralı
Birçok kişi "Sunucum destekliyor, neden hala HTTP/1.1 görüyorum?" diye soruyor. Cevap basit: Güvenlik.
HTTP/2 standardı aslında SSL'siz çalışmaya izin verir. Ancak Chrome, Firefox ve Safari gibi devler, interneti daha güvenli bir yer haline getirmek için bir "şart" koştular: "HTTP/2 konuşmak istiyorsan, SSL (TLS) kullanmak zorundasın." Eğer sitenizde SSL yoksa, tarayıcı otomatik olarak vites küçültür ve yavaş olan HTTP/1.1 protokolüne geri döner.
.NET ve Windows Server 2022 Tarafında Durum Ne?
Eğer projenizi Windows Server 2022 üzerinde, IIS ile yayınlıyorsanız ve SSL sertifikamanız aktifse, ekstra bir ayar yapmanıza gerek kalmıyor. Sunucu ve tarayıcı "el sıkışırken" otomatik olarak en hızlı protokolde anlaşıyorlar. .NET Core projelerinizde h2'nin avantajlarını doğrudan kullanmaya başlıyorsunuz.
Sonuç Olarak
Eğer bir .NET projesini yayına aldıysanız; sunucunuzun güncelliğini kontrol edin, mutlaka geçerli bir SSL sertifikası kullanın ve tarayıcınızın Network sekmesinde "Protocol" sütununu açıp "h2" yazısını gördüğünüzden emin olun.
Geçmişte Google’ın bir deneyi olarak başlayan bu süreç, bugün modern web’in standardı haline geldi. Biz geliştiricilere düşen ise bu altyapıyı doğru kurup, kullanıcılarımıza en hızlı deneyimi sunmak.