Brotli ve Gzip aynı anda açıkken tarayıcı hangi sıkıştırmayı seçer?

Brotli ve Gzip aynı anda etkin olduğunda seçim rastgele yapılmaz; tarayıcı, sunucuya gönderdiği Accept-Encoding başlığıyla desteklediği sıkıştırma algoritmalarını bildirir, sunucu da bu listeye ve kendi yapılandırmasına göre yanıtı uygun biçimde sıkıştırır. Modern tarayıcıların çoğu Brotli desteklediği için HTTPS üzerinden genellikle Brotli tercih edilir. Ancak bu tercih, yalnızca tarayıcının desteğine değil; sunucu ayarlarına, dosya türüne, önbelleğe ve kullanılan CDN ya da ters proxy katmanına da bağlıdır.

Pratikte şu kural çoğu senaryo için geçerlidir: Tarayıcı br desteği gönderiyorsa ve sunucu Brotli yanıt verebiliyorsa Brotli kullanılır; Brotli desteklenmiyorsa ya da ilgili içerik Brotli ile sunulamıyorsa Gzip devreye girer. Bu nedenle iki sıkıştırmanın aynı anda açık olması genellikle çakışma yaratmaz, aksine uyumluluk açısından güvenli bir yapı sağlar.

Tarayıcı sıkıştırma tercihini nasıl bildirir?

Bir ziyaretçi web sitenize girdiğinde tarayıcı, HTTP isteği içinde desteklediği sıkıştırma biçimlerini sunucuya iletir. Örnek bir başlık şu şekilde olabilir:

Accept-Encoding: gzip, deflate, br

Bu ifade, tarayıcının Gzip, Deflate ve Brotli içerikleri açabildiğini gösterir. Sunucu bu başlığı okur ve yanıt başlığında hangi sıkıştırmayı kullandığını bildirir:

Content-Encoding: br

Burada br, içeriğin Brotli ile sıkıştırıldığını belirtir. Eğer yanıt Content-Encoding: gzip olarak dönüyorsa, sunucu Gzip kullanmıştır. Web performansı testi yaparken yalnızca sayfa hız skoruna bakmak yerine bu yanıt başlığını kontrol etmek daha sağlıklı değerlendirme yapmanızı sağlar.

Brotli neden çoğu zaman Gzip yerine seçilir?

Brotli, özellikle HTML, CSS, JavaScript ve SVG gibi metin tabanlı dosyalarda Gzip’e göre daha iyi sıkıştırma oranı sunabilir. Daha küçük dosya boyutu, daha hızlı aktarım ve özellikle mobil bağlantılarda daha iyi kullanıcı deneyimi anlamına gelir. Bu nedenle güncel tarayıcılar ve doğru yapılandırılmış sunucu ortamlarında Brotli genellikle öncelikli tercih edilir.

Ancak Brotli’nin her durumda daha hızlı olduğu düşünülmemelidir. Sıkıştırma seviyesi çok yüksek ayarlanırsa işlemci kullanımı artabilir. Dinamik içeriklerde gerçek zamanlı sıkıştırma yapılıyorsa, yüksek Brotli seviyeleri yanıt süresini olumsuz etkileyebilir. Kurumsal sitelerde dengeli bir seviye seçmek, maksimum sıkıştırmadan daha önemlidir.

Gzip hâlâ gerekli mi?

Evet, Gzip hâlâ önemlidir. Eski tarayıcılar, bazı botlar, özel istemciler veya ara sistemler Brotli desteklemeyebilir. Bu durumda Gzip, geriye dönük uyumluluk sağlar. Bu nedenle iyi yapılandırılmış bir hosting ortamında Brotli ve Gzip birlikte bulunabilir; amaç aynı dosyayı iki kez sıkıştırmak değil, istemcinin desteklediği en uygun yöntemi sunmaktır.

Yanlış yapılandırmalarda aynı içerik zincirleme şekilde iki kez sıkıştırılmaya çalışılabilir. Bu durum nadir görülse de bozuk dosya çıktısına, tarayıcı hatalarına veya gereksiz işlemci tüketimine yol açabilir. Sunucu yanıtında yalnızca tek bir Content-Encoding değeri görmeniz beklenir.

HTTPS ve Brotli ilişkisi

Brotli desteği tarayıcı tarafında çoğunlukla HTTPS bağlantılarda aktiftir. Siteniz hâlâ HTTP üzerinden çalışıyorsa, Brotli beklediğiniz gibi devreye girmeyebilir. Bu nedenle Brotli yapılandırmasını test ederken SSL sertifikasının geçerli olduğundan, site yönlendirmelerinin doğru çalıştığından ve testin HTTPS URL üzerinden yapıldığından emin olun.

Sunucu ve CDN katmanında nelere dikkat edilmeli?

Sıkıştırma yalnızca ana sunucuda yapılmayabilir. CDN, reverse proxy, cache eklentisi veya güvenlik duvarı gibi ara katmanlar da yanıtı değiştirebilir. Bu nedenle “Brotli açık ama Gzip görünüyor” sorunu yaşandığında kontrol tek bir noktada yapılmamalıdır.

Kontrol etmeniz gereken pratik noktalar

  • Tarayıcı geliştirici araçlarında yanıt başlığındaki Content-Encoding değerini inceleyin.
  • Testi HTTPS üzerinden yaptığınızdan emin olun.
  • CDN kullanıyorsanız Brotli seçeneğinin ayrıca etkin olup olmadığını kontrol edin.
  • Cache eklentilerinde Gzip ve Brotli ayarlarının sunucu ayarlarıyla çakışmadığını doğrulayın.
  • Görsel, PDF, video ve font dosyalarının zaten sıkıştırılmış olabileceğini unutmayın; her dosyada ek kazanç beklemeyin.

Hangi dosyalarda Brotli veya Gzip etkili olur?

Sıkıştırma en çok metin tabanlı kaynaklarda fayda sağlar. HTML, CSS, JavaScript, JSON, XML ve SVG dosyaları genellikle belirgin şekilde küçülür. Buna karşılık JPEG, PNG, WebP, MP4 veya ZIP gibi formatlar zaten sıkıştırılmış olduğundan tekrar sıkıştırma anlamlı bir performans kazancı sağlamaz.

Bu ayrımı bilmek önemlidir; çünkü gereksiz sıkıştırma denemeleri sunucu kaynaklarını tüketebilir. Özellikle yoğun trafikli projelerde hangi MIME türlerinin sıkıştırılacağını sınırlamak daha verimli bir yaklaşımdır.

WordPress sitelerde doğru yaklaşım

WordPress tarafında performans eklentileri sıkıştırma seçenekleri sunabilir; ancak asıl karar çoğu zaman web sunucusu, CDN veya kontrol paneli üzerinden verilir. Aynı özelliği hem eklenti hem sunucu hem CDN üzerinde agresif biçimde açmak yerine, sıkıştırmanın hangi katmanda yapıldığını netleştirmek gerekir.

Paylaşımlı hosting kullanıyorsanız Brotli desteği panelde görünmeyebilir veya yalnızca CDN üzerinden sağlanabilir. VPS ya da özel sunucuda ise Nginx, Apache, LiteSpeed veya OpenLiteSpeed yapılandırmasına göre daha ayrıntılı kontrol mümkündür. Karar verirken yalnızca “Brotli açık mı?” sorusuna değil, yanıt başlıklarında gerçekten hangi algoritmanın kullanıldığına bakılmalıdır.

Doğru yapılandırma için kısa karar rehberi

Modern bir web sitesi için en sağlıklı yapı, Brotli’yi destekleyen istemcilere Brotli; desteklemeyenlere Gzip sunmaktır. Böylece yeni tarayıcılarda daha iyi sıkıştırma oranı elde edilirken eski istemciler dışarıda bırakılmaz. Performans testi yaparken ana sayfa dışında CSS ve JavaScript dosyalarını da kontrol etmek gerekir; çünkü bazı sistemlerde HTML Brotli dönerken statik dosyalar Gzip kalabilir.

Eğer yanıt başlıklarında beklediğiniz değeri göremiyorsanız önce önbelleği temizleyin, ardından CDN ve sunucu katmanlarını ayrı ayrı test edin. Bu yaklaşım, sorunun tarayıcıdan mı, yapılandırmadan mı yoksa ara katmandan mı kaynaklandığını hızlıca ayırmanıza yardımcı olur.