Sıkıştırma (Gzip, Brotli, Zstd)

HTTP metin sıkıştırmasının nasıl çalıştığı; Gzip, Brotli ve Zstd arasındaki farklar; Googlebot'un gerçekte neleri desteklediği; sıkıştırmanın Core Web Vitals ve web tarayıcısı getirme sınırlarını nasıl etkilediği ve sunucu tarafında nasıl etkinleştirilip doğrulanacağı. Ağ üzerinden aktarılan baytları azaltmaya yönelik ayrıntılı web performansı incelemesi.

İlk yayın tarihi: 3 Tem 2026 · Son güncelleme: 9 Ağu 2026 · Advanced
Diller

Sıkıştırma (HTTP içerik kodlaması), metin tabanlı yanıtları — HTML, CSS, JS, JSON, SVG ve XML site haritalarını — ağdan geçmeden önce küçültür. Her istek için Accept-Encoding / Content-Encoding üzerinden uzlaşma yapılır; önbellekteki sürümlerin doğru tutulması için Vary: Accept-Encoding gerekir. Brotli, metinlerde genellikle Gzip'ten daha iyi sonuç verir (çoğu zaman yaklaşık %15–20 daha küçük olduğu belirtilir; ancak bu yön gösteren bir değerdir, garanti edilmiş bir oran değildir) ve istemci desteklediğinde Google'ın açıkladığı tercihtir. Gzip evrensel yedektir. Zstd kayıtlı ancak evrensel olarak desteklenmeyen üçüncü bir codec'tir; Google'ın web tarayıcısı belgeleri Googlebot için Zstd desteği belirtmez. Googlebot gzip, deflate ve Brotli'yi (br) açıkça destekler; bu, Google'ın güncel web tarayıcısı belgelerinde belirtilmiş, Gary Illyes tarafından 2020'de gayriresmî olarak doğrulanmış ve Google'ın 2008 tarihli 'First date with the Googlebot' yazısına dayandırılmıştır. Sıkıştırma bir sıralama faktörü değildir ve tek başına TTFB/LCP ya da Arama iyileşmesi garanti etmez; aktarım boyutunu azaltır, bu da gerçek darboğaz buysa TTFB ve LCP'ye yardımcı olabilir. Ayrıca sayfaların Google'ın getirme sınırının (Illyes'in 2026 tarihli 'Inside Googlebot' yazısına göre HTML için 2 MB) altında kalmasına yardımcı olur. Biçimleri yalnızca uzantılarına göre genel olarak dışlamayın; MIME türüne ve ölçülen çıktıya göre karar verin. Zaten sıkıştırılmış biçimler (görüntüler, video, WOFF2 ve çoğu PDF) nadiren yarar sağlar. Statik/önceden sıkıştırılmış varlıklarda daha yüksek, dinamik içerikte düşük/orta aralıkta sıkıştırma kullanın ve kendi trafiğinizle kullanılabilir CPU kapasitenizi temel alarak karşılaştırmalı ölçüm yapın; evrensel olarak en iyi tek bir düzey yoktur. BREACH türü risk, gizli bir değeri saldırganın yansıttığı içerikle birleştiren yanıtlarla sınırlıdır; site genelinde sıkıştırmayı kapatmak için gerekçe değildir. Ayrıca Sitemaps protokolü gzip ile sıkıştırılmış site haritalarına açıkça izin verir.

TL;DR — Sıkıştırma, HTTP içerik kodlaması uzlaşmasıdır: istemci Accept-Encoding (q ağırlıkları ve identity içerebilir) gönderir, sunucu her istek ve kaynak için Content-Encoding ile yanıt verir — kodlamaya göre değişen önbelleğe alınabilir bir yanıtın Vary: Accept-Encoding içermesi gerekir. Brotli aynı metinde genellikle Gzip’den daha iyi sonuç verir (kesin fark içeriğe, codec sürümüne ve düzeye bağlı olsa da sıklıkla %15–20 civarında belirtilir) ve desteklendiğinde Google’ın açıkladığı tercihtir; Gzip evrensel yedektir; Zstd, kayıtlı ancak evrensel olarak desteklenmeyen üçüncü bir codec’tir (Google’ın tarayıcı belgeleri Googlebot için Zstd desteği belirtmez). Googlebot gzip, deflate ve Brotli’yi (br) destekler — bu bugün açıkça belgelenmiştir, Gary Illyes tarafından 2020’de gayriresmî olarak doğrulanmıştır ve kökeni Google’ın 2008 tarihli “First date with the Googlebot” yazısına dayanır. Sıkıştırma bir sıralama faktörü değildir ve tek başına TTFB/LCP ya da Arama değişikliği garanti etmez; aktarım boyutunu küçültür ve gerçek darboğazınız buysa TTFB → LCP sürecine yardımcı olabilir. Ayrıca sayfaların Google’ın getirme sınırının (2026 tarihli “Inside Googlebot” yazısına göre HTML için 2 MB) altında kalmasına yardımcı olur — bu yalnızca hız değil, tarama verimliliği kazancıdır. Neleri sıkıştırıp sıkıştırmayacağınıza genel bir uzantı listesiyle değil, MIME türü ve ölçülen çıktıyla karar verin; BREACH türü risk, gizli bir değeri saldırganın yansıttığı içerikle birleştiren yanıtlarla sınırlıdır ve sıkıştırmayı site genelinde kapatmak için gerekçe değildir. Statik/önceden sıkıştırılmış varlıklarda daha yüksek, dinamik içerikte düşük/orta aralıkta sıkıştırma kullanın — evrensel olarak en iyi tek bir düzey olmadığından kendi trafiğiniz ve CPU’nuzla karşılaştırmalı ölçüm yapın. Sitemaps protokolü de gzip ile sıkıştırılmış site haritalarına açıkça izin verir.

Evidence for this claim HTTP content coding compresses transferred representations and is negotiated with Accept-Encoding and Content-Encoding. Scope: Current official or standards documentation. Confidence: high · Verified: MDN: HTTP compression Evidence for this claim Brotli is an HTTP content coding supported through the br encoding token. Scope: Current official or standards documentation. Confidence: high · Verified: RFC 7932: Brotli

Sıkıştırma gerçekte nedir?

Sıkıştırma — doğru ifadeyle HTTP içerik kodlaması — metin tabanlı yanıt gövdesini ağdan geçmeden önce küçültür; böylece istemci daha az bayt indirir ve bunları yerel olarak açar. Her istek için uzlaşma yapılır. Google’ın Lighthouse belgelerinde şöyle açıklanır: “When a browser requests a resource, it will use the Accept-Encoding HTTP request header to indicate what compression algorithms it supports.” Tipik bir başlık Accept-Encoding: gzip, deflate, br biçimindedir. Sunucu bunlardan birini seçer ve seçimini Content-Encoding yanıt başlığında bildirir.

Doğrudan HTTP belirtiminden (RFC 9110) gelen ve kesin biçimde ayrılması gereken iki sınır vardır: içerik kodlaması, temsil verilerinin dönüştürülmesidir — yani yanıt gövdesinin — ve bağlantı üzerinden ilerleyen ileti üzerinde çalışan aktarım kodlamasından farklıdır. Bu sayfada ele alınan sıkıştırma, Content-Encoding ile tanımlanan içerik kodlamasıdır. Uzlaşmanın kendisi de yalnızca düz bir liste değildir: Accept-Encoding, istemcinin kabul etmeye hazır olduğu kodlamalar arasındaki tercihlerini sıralayan ağırlıklar (q değerleri) taşıyabilir ve ret durumunu da (q=0) ifade edebilir; identity, “kodlama uygulanmadı” anlamındaki belirteçtir. (RFC 9110, §8.4 ve §12.5.3.) Önbelleğe alınabilir bir yanıtın gövdesi uzlaşılan kodlamaya göre gerçekten değişiyorsa — örneğin aynı URL’nin gzip ve Brotli sürümleri — önbelleğin çözemeyecek bir istemciye yanlış sürümü sunmaması için yanıtın Vary: Accept-Encoding içermesi gerekir (RFC 9110, §12.5.5; Apache’nin mod_deflate belgeleri, sıkıştırılmış önbellek sürümleri için tam olarak bu Vary gereksinimini açıklar).

Bu, metinlere uygulanır: HTML, CSS, JavaScript, JSON, SVG ve XML (site haritaları dâhil). Hem Gzip hem Brotli metin varlıklarını önemli ölçüde küçültebilir — Google’ın kendi PageSpeed kılavuzu bir üst sınır belirtir: “Enabling gzip compression can reduce the size of the transferred response by up to 90%.” Bunu tipik bir rakam değil, üst sınır olarak değerlendirin; belirli bir yanıttaki gerçek tasarruf içeriğin tekrar düzeyine, boyutuna, önceden küçültülüp küçültülmediğine, kullanılan codec’e, sürüme, sözlüğe ve sıkıştırma düzeyine bağlıdır. Bu nedenle bir sitenin rakamları başka bir siteye genellenemez.

Olmadığı iki şey vardır ve ikisi de önemlidir:

  • Küçültme değildir. Küçültme, kaynaktaki karakterleri (boşluklar, yorumlar) kaldırır; sıkıştırma ise ortaya çıkan baytları aktarım için yeniden kodlar. Birlikte uygulanırlar — önce küçültün, sonra sıkıştırın — ve birini atlamak olası tasarrufun bir kısmından vazgeçmek demektir.
  • Önbelleğe alma değildir. Sıkıştırma kodlamayla (hat üzerinden geçen baytları küçültmekle), önbelleğe alma ise saklama ve yeniden kullanımla (Cache-Control, ETag, CDN’ler) ilgilidir. Bunlar, “baytların tarayıcıya verimli biçimde ulaşmasını” sağlayan tamamlayıcı araçlardır. Saklama tarafı için önbelleğe alma sayfasına bakın.

Bu sayfa, kritik oluşturma yolu merkezi altındaki ayrıntılı sıkıştırma incelemesidir. Merkezdeki daha geniş kapsamlı kritik baytlar kontrol listesinde “metni sıkıştır” bir madde olarak yer alır. Bu sayfa, o maddeyi tüm ayrıntılarıyla ele alır.

Gzip, Brotli ve Zstd karşılaştırması

Sıkıştırma oranı

Brotli genellikle metinlerde daha iyi sonuç verir; ancak belirli bir rakamı evrensel kabul etmeyin. Google’ın Lighthouse belgesi, denetimde bildirilen tasarrufun Gzip ile hesaplandığını açıkça belirtir ve “if Brotli is used, even more savings are possible.” der. Google’ın kendi web.dev Brotli codelab çalışmasında somut bir örnek vardır: sıkıştırılmamış hâli 225 KB olan main.bundle.js, Gzip ile yaklaşık 61,6 KB’a, Brotli ile yaklaşık 53,1 KB’a düşmüştür — bu dosyada Brotli yaklaşık %14 daha küçük sonuç vermiştir. Bu tür rakamlar (ve başka yerlerde göreceğiniz yaklaşık %15–20 değeri) yön gösterir, garanti vermez. Belirli bir varlıktaki gerçek fark codec/kütüphane sürümüne, seçilen sıkıştırma düzeyine, içeriğin tekrar düzeyine ve önceden küçültülüp küçültülmediğine bağlıdır. Hiçbir codec veya kalite düzeyi, sıkıştırdığınız içerikten bağımsız olarak “her zaman en iyi” değildir; başkasının yüzdesini aktarmak yerine kendi varlıklarınızda karşılaştırmalı ölçüm yapın.

Gzip evrensel yedektir. Her yerde desteklenir; Google’ın onu güvenlik ağı olarak önermesinin nedeni tam olarak budur: “Use GZIP as a fallback to Brotli. GZIP is supported in all major browsers, but is less efficient than Brotli.”

Zstd, kayıtlı üçüncü bir codec’tir; henüz güvenli bir varsayılan değildir. IANA’nın HTTP içerik kodlaması sicilinde gzip, br ve zstd yer alır; ancak bu listeye kayıtlı olmak evrensel istemci, tarayıcı, kaynak sunucu veya CDN desteğiyle aynı şey değildir. Bu nedenle yalnızca belirli bir isteğin gerçekten talep ettiği kodlamaları bildirin ve çalışan bir yedek yolunu koruyun. Özellikle HTTP birlikte çalışabilirliği için, önceki RFC 8878 zstd kaydını güncelleyen RFC 9659, kod çözücülerin 8 MB’a kadar pencereleri desteklemesini zorunlu kılar ve kodlayıcıların bundan daha büyük bir pencere gerektirmesini yasaklar — bunun için bir sunucu veya CDN yapılandırıyorsanız bilmeniz yararlıdır. Bu HTTP içerik kodlaması zstd, sözlük tabanlı sıkıştırma kodlaması dcz’den de farklıdır; sağlayıcı belgelerini okurken ikisini karıştırmayın. Gerçek dünyadaki benimsenme hâlâ erken aşamadadır (örneğin Caddy, encode zstd gzip sunar) ve Google’ın güncel tarayıcı belgeleri, tarayıcıları ve getiricileri için gzip, deflate ve Brotli’yi sıralar; Googlebot için Zstandard desteğini belirtmez. Bu nedenle Zstd’nin bu gruba dâhil olduğunu varsaymayın. Zstd’yi izlenecek bir seçenek olarak görün; yığınınız desteklediğinde ve istek bunu talep ettiğinde etkinleştirin, ancak henüz Gzip/Brotli’nin yerine koymayın. Evidence for this claim gzip, br and zstd are registered HTTP content codings, but registration is not universal client, crawler, origin or CDN support; deploy only a coding advertised for the individual request and preserve a valid identity or fallback path. For HTTP interoperability, RFC 9659 requires zstd decoders to support windows through 8 MB and encoders not to require larger windows; this `zstd` coding is distinct from dictionary coding `dcz`. Scope: registry Confidence: high · Verified: HTTP Content Coding Registry

Tarayıcı ve web tarayıcısı desteği

Brotli desteği artık tarayıcılarda fiilen evrenseldir; ancak her zaman böyle değildi. Bu tarihsel boşluğu bilmek önemlidir, çünkü Gzip yedeğinin hâlâ gerekli olmasının nedeni budur. Google’ın Lighthouse belgesinde şöyle belirtilir: “As of December 2022 Brotli is supported in all major browsers except Safari on iOS.” iOS’taki Safari boşluğu, Gzip’i zincirde tutmanızın klasik örneğidir.

Google, istemci kullanabildiği her durumda Brotli’yi önerir: “If the browser supports Brotli (br) you should use Brotli because it can reduce the file size of the resources more than the other compression algorithms.”

Hangi durumlarda yine Gzip’e dönülmeli?

Gzip’i her zaman Brotli ile birlikte yapılandırın. İçerik kodlaması her istek için uzlaşmayla belirlenir; dolayısıyla doğru yapılandırılmış bir sunucu br bildiren istemcilere Brotli, diğer herkese otomatik olarak Gzip sunar. Birini veya diğerini seçmezsiniz; ikisini de sunar ve el sıkışmanın karar vermesini sağlarsınız.

Google (ve Bing) Brotli ile Gzip’i destekliyor mu?

Çoğu sıkıştırma makalesinin kanıt göstermeden kesin bir ifadeyle yanıtladığı soru budur. Burada Google’ın kendi açıklamalarından oluşan, tarihli ve üç aşamalı kanıt zincirini bulabilirsiniz.

2008 tarihli “First date with the Googlebot” yazısı

Google, sıkıştırmayı 2008’den beri kendi ifadeleriyle açıklıyor. First date with the Googlebot: Headers and compression yazısında (Maile Ohye ve Jeremy Lilley), tüm büyük arama motorlarıyla web tarayıcılarının bant genişliğinden tasarruf etmek için gzip sıkıştırmasını desteklediğini yazdı. Ayrıca x-gzip (gzip ile aynı), deflate (Google bunu da destekler) ve identity (hiçbiri) görebileceğinizi belirtti. Aynı yazıda Google, Flash, JPG, PNG, GIF ve PDF gibi birçok dosya biçiminin zaten sıkıştırılmış olduğunu ve bunları yeniden sıkıştırmanın çok az kazanç sağlayacağını açıklar. Sağlamlık gerekçesiyle gzip’i deflate’e hafifçe tercih ettiğini bile belirtir (gzip bir sağlama toplamı ve tam başlık taşır, dolayısıyla tahmine daha az yer bırakır). “Güncelliğini yitirmiş” etiketi taşıyan eski bir yazıdır; ancak içeriği hâlâ yayındadır, konuyla doğrudan ilgilidir ve güncel makalelerin neredeyse hiçbiri ona atıfta bulunmaz.

2008 tarihli yazı burada tırnak işaretleri / derin bağlantılar olmadan aktarılmıştır: araştırma özeti, bu satırları doğrudan getirme yoluyla bire bir alt dizeler olarak doğrulamıştır; ancak eski şablon için resmî #:~:text= parça bağlantıları oluşturulmadığından, bire bir alıntılar olarak sunulmak yerine başka sözcüklerle aktarılmışlardır.

Gary Illyes’in 2020 tarihli Brotli doğrulaması

Googlebot’un Brotli desteği, resmen belgelenmeden önce gayriresmî olarak doğrulanmıştı. Ağustos 2020’de Google’dan Gary Illyes, Googlebot ekibiyle görüştükten sonra birkaç hafta önce kendisine Googlebot’un Brotli sıkıştırmasını destekleyip desteklemediğinin sorulduğunu ve desteklediğini söyledi. Barry Schwartz aynı gün bunu Search Engine Roundtable üzerinden bildirdi. Bu, güncel tarayıcı genel bakış belgelerinden yaklaşık dört yıl öncesine dayanır — bir temsilcinin tarayıcı davranışını belgelere girmesinden çok önce doğrulayabileceğini hatırlatan güzel bir örnektir.

Güncel resmî web tarayıcısı belgeleri

Bugün bu açıkça belirtilmektedir. Google’ın Crawler (User Agent) Overview belgesinde şöyle denir: “Google’s crawlers and fetchers support the following content encodings (compressions): gzip, deflate, and Brotli (br).” Ayrıca her istek için uzlaşmayı tarayıcıyla aynı biçimde açıklar: “The content encodings supported by each Google user agent is advertised in the Accept-Encoding header of each request they make. For example, Accept-Encoding: gzip, deflate, br.” Ayrı bir içerik kodlaması bölümü bulunan Ahrefs Googlebot rehberimde de aynı şeyi söylüyorum: “Googlebot supports gzip, deflate, and Brotli (br).”

Dolayısıyla silsile şöyledir: 2008 blog yazısı → 2020 Illyes doğrulaması → güncel web tarayıcısı belgeleri. Bu spekülasyon değil, sağlam biçimde yerleşmiş bir bilgidir.

Bing belgelerindeki boşluk

Buradaki dürüst dipnot Bing’dir. Bingbot’un sıradan HTML’yi tararken hangi içerik kodlamaları için uzlaşma yaptığını belirten, Google’ın web tarayıcısı genel bakış sayfasına eşdeğer, ayrıntılı ve herkese açık bir Bing belgesi yoktur. Bing’in belgelediği kapsam daha dardır: Content Submission API’si Gzip’i destekler ve Bing’e gzip ile sıkıştırılmış site haritası dosyaları (.xml.gz) gönderebilirsiniz. HTTP sıkıştırması, neredeyse tüm modern istemcilerin Accept-Encoding üzerinden uzlaştığı standart bir mekanizma olduğundan Bingbot’un en azından Gzip’i kullandığını varsaymak makuldür; ancak bunu belgelenmiş bir Bing açıklaması değil, HTTP’nin çalışma biçiminden çıkarılan bir sonuç olarak değerlendirin. Bu, Bingbot’un gerçek davranışına yönelik bir eleştiri değil, iki motor arasındaki gerçek bir belge şeffaflığı boşluğudur.

Sıkıştırma performans ve Core Web Vitals için neden önemlidir?

Nedensellik zinciri (kesin biçimde ifade edelim)

Sıkıştırma doğrudan bir sıralama faktörü değildir. Etkilediği mekanizma şudur: daha küçük aktarım boyutu indirme süresini kısaltabilir; bu da Time to First Byte ve sonraki Largest Contentful Paint değerlerine yardımcı olabilir. Bunlar, bir sayfa deneyimi sinyali olan Core Web Vitals’ı etkiler. Buradaki “olabilir” ifadesine dikkat edin: Google’ın kendi kılavuzu, garanti edilen sonucu daha az ağ baytıyla sınırlar; TTFB/LCP kazanımı, daha iyi Core Web Vitals veya Arama değişikliği garanti etmez. Yükleme başka bir yerde darboğaza giriyorsa (yavaş bir veritabanı sorgusu, oluşturmayı engelleyen bir komut dosyası, DNS/bağlantı kurulumu), zaten küçük bir yanıtı sıkıştırmak önemli bir fark yaratmaz. Sıkıştırmanın tek başına hız sorununu çözeceğini varsaymak yerine kendi darboğazınızı ve saha sonucunuzu ölçün. Puanlanan şey sıkıştırma ayarı değil, hız sonucudur. Bunu doğru anlamak önemlidir; çünkü birçok rakip içerik “SEO’ya yardımcı olur” ifadesini “sıralama faktörü” ile karıştırır. (Bkz. Time to First Byte, Largest Contentful Paint ve Core Web Vitals.) Evidence for this claim Reducing transferred bytes may improve a network-bound load, but compression alone does not guarantee lower TTFB/LCP, better Core Web Vitals or a Search change; measure the actual bottleneck and field outcome. Scope: lab audit Confidence: high · Verified: Enable text compression

Google’dan Martin Splitt’in, ham sayfa ağırlığının bu konuyu düşünmek için neden yanıltıcı olduğuna ilişkin güzel bir çerçevesi vardır: önemli olan diskteki sıkıştırılmamış boyut değil, sıkıştırmadan sonra kablo üzerinden gerçekten geçen veridir — sıkıştırılmamış hâli 10 MB görünen bir sayfa ağ üzerinden beş veya altı olabilir. Splitt’in bu görüşü birincil bir dökümden değil, Search Engine Journal’ın haberinden aktarıldığı için burada alıntılanmamış, başka sözcüklerle aktarılmıştır.

Sıkıştırma ve tarama verimliliği — yeterince önemsenmeyen yön

Sıkıştırma yalnızca insanlar için sayfa hızıyla ilgili değildir. Google’ın getirme sınırının altında kalmanıza da yardımcı olur. 2026 tarihli “Inside Googlebot” güncellemesine (Gary Illyes) göre Googlebot, HTML için URL başına yaklaşık 2 MB getirir (önceki 15 MB değerinden düşürülmüştür) ve sınırı aşan içerik reddedilmez, kesilir — yalnızca indirilen bölüm dizine ekleme için iletilir. HTML’nizi sıkıştırmak, kritik içeriği bu bütçe içinde tutan araçlardan biridir. Dolayısıyla bu yalnızca Core Web Vitals değil, tarama verimliliği meselesidir. (Sınır hakkında daha fazla bilgi için tarama sayfasına bakın.)

Lighthouse “Enable text compression” denetimi — kesin eşikler

PageSpeed Insights / Lighthouse “Enable text compression” denetiminin belirtilmeye değer kesin tetikleme kuralları vardır. Lighthouse, hâlihazırda br, gzip veya deflate değerli bir content-encoding taşımayan metin tabanlı yanıtları toplar, tasarrufu tahmin etmek için her birini Gzip ile sıkıştırır ve Google’ın belgesine göre şu kuralı uygular: “If the original size of a response is less than 1.4KiB, or if the potential compression savings is less than 10% of the original size, then Lighthouse does not flag that response in the results.” Dolayısıyla yaklaşık 1,4 KiB’ın altındaki küçük dosyalar sıkıştırılmamış olsalar bile uyarıyı tetiklemez. (Lighthouse 13 itibarıyla bu denetim daha geniş “Document request latency” içgörüsüne dâhil edilmiştir; ancak temel kılavuz değişmemiştir.)

Doğru yapılandırılmış bir site denetimde neden yine başarısız olabilir?

Google’ın PageSpeed belgelerinden doğrudan gelen, gerçekten yararlı bir sorun giderme bilgisi şudur: “Proxy servers and anti-virus software can disable compression when files are downloaded to a client machine.” Bu, sunucunuz doğru yapılandırılmış olsa bile bir aracının aktarım sırasında Content-Encoding başlığını kaldırması nedeniyle sıkıştırma denetleyicisinin yanlış negatif — “sıkıştırma etkin değil” — bildirebileceği anlamına gelir. Raporun bozuk veya sunucunun yanlış yapılandırılmış olduğunu varsaymadan önce temiz bir ağ yolundan test edin.

Statik ve dinamik sıkıştırma — uygulama ödünleşimleri

Sıkıştırma düzeyleri

Her iki algoritmada da CPU süresiyle sıkıştırma oranı arasında ödünleşim sağlayan ayarlanabilir düzeyler vardır:

  • Gzip: 1–9 düzeyleri.
  • Brotli: Google’ın web.dev codelab çalışmasına göre 0 (sıkıştırma yok) ile 11 (en yüksek) arasındaki düzeyler.

Daha yüksek düzeyler daha güçlü sıkıştırır, ancak daha fazla CPU süresi harcar.

CPU maliyeti — statik ve dinamik ayrımı neden önemlidir?

Sıkıştırma bedelsiz değildir; CPU tüketir ve önceden oluşturulmuş varlıklarla anında üretilen içeriğin maliyet profilleri tamamen farklıdır. Her iki durum için de doğru ayar tek bir evrensel rakam değildir. Temel içeriğin ne sıklıkla değiştiğine, önbellek/CDN katmanınızın sıkıştırılmış sürümü nasıl işlediğine, trafik hacminize ve yalnızca bir blog yazısından alınmış pratik kurala değil, gerçekten ölçtüğünüz sonuçlara bağlıdır.

  • Statik (önceden sıkıştırılmış / derleme zamanında) varlıklar — önceden bir kez sıkıştırılacak kadar kararlı içerikler (nginx’in gzip_static ve Apache’nin mod_deflate belgelerinin ikisi de her istekte yeniden sıkıştırmak yerine önceden sıkıştırılmış bir dosyanın seçilmesini açıklar), CPU maliyeti her istekte değil derleme sırasında bir kez ödendiği için daha yüksek sıkıştırma düzeylerini kaldırabilir. web.dev codelab çalışmasının ifade ettiği gibi, sıkıştırma önceden yapıldığında yüksek sıkıştırma düzeylerinin gecikmesi artık sorun değildir; ödünleşim, ziyaretçi başına değil bir kez katlandığınız daha uzun derleme sürelerine kayar.
  • Dinamik (her istek için üretilen) yanıtlar — gerçek zamanda en yüksek düzeylerde sıkıştırma her yanıta gecikme ekler. Bu nedenle düşük/orta aralıkta bir düzey yaygın bir başlangıç noktasıdır (araçlar bazen oran ve hız arasında başlangıç dengesi olarak dinamik içerikte Brotli’yi yaklaşık kalite 4’e ayarlar). Ancak bunu sabit bir kural değil, kendi CPU kapasiteniz ve trafiğinizle karşılaştırmalı ölçüm yapacağınız bir başlangıç noktası olarak değerlendirin. Google bu ödünleşimi 2008 tarihli yazısında bile vurgulamıştır: gzip/deflate’i etkinleştirmenin CPU maliyeti vardır ve zaten yoğun CPU yükü altında dinamik içerik sunan bir sunucuda her şey için en yüksek sıkıştırmayı açmadan önce bunu değerlendirmek gerekir.

Pratik başlangıç noktası statik için daha yüksek, dinamik için düşük/orta aralıkta bir düzeydir. Ancak bunu bir makaleden (bu makale dâhil) alınmış düzey numarasıyla değil, kendi değişkenliğiniz, önbellek/CDN davranışınız, trafiğiniz ve ölçülmüş öncesi/sonrası sonuçlarıyla doğrulayın.

Sıkıştırma nasıl etkinleştirilir?

Mekanizma her yerde aynıdır: sunucuyu (veya CDN/uç katmanını) metin yanıtlarını sıkıştıracak ve Gzip yedeğiyle Brotli sunacak şekilde yapılandırın. Platformlara göre:

  • Apachemod_deflate modülü (Brotli için de mod_brotli). Google’ın PageSpeed kılavuzu doğrudan buraya yönlendirir.
  • Nginx — yerleşik ngx_http_gzip_module (gzip on; ve gzip_types) ile br için Brotli modülü.
  • IIS — yerleşik HTTP Compression (statik ve dinamik).
  • CDN / uç — Cloudflare, Fastly ve benzerleri genellikle Brotli + Gzip’i bir açma-kapama seçeneği olarak sunar; Caddy encode zstd gzip sunar.
  • Uygulama çerçeveleri — Node/Express compression ara yazılımı; Next.js/Vercel ve çoğu modern barındırma hizmeti varsayılan olarak sıkıştırır.

Ardından doğrulayın (tam komutlar için Kontrol Listeleri görünümüne bakın). En hızlı kontrol: curl -I -H "Accept-Encoding: br, gzip" https://example.com/ komutunu çalıştırın ve yanıtta bir content-encoding başlığı arayın.

Neler sıkıştırılmamalı?

Zaten sıkıştırılmış biçimleri yeniden sıkıştırmayın: JPG, PNG, GIF, çoğu video, WOFF2 yazı tipleri ve çoğu PDF. Bunlar dâhili olarak zaten sıkıştırılmıştır; üzerlerinde yeniden Gzip veya Brotli çalıştırmak, ihmal edilebilir — bazen olumsuz — bir boyut değişikliği için CPU harcar. Bu listeyi kapsamlı bir kurallar bütünü değil, örnekler olarak değerlendirin. GTmetrix’in kendi sorun giderme kılavuzu da aynı çerçeveyi kullanır: zaten sıkıştırılmış veya yüksek entropili biçimler “may not benefit and can grow.” Daha güvenli genel kural, sıkıştırmayı MIME türüne (metin tabanlı biçimlere) göre sınırlamak ve mümkünse genel bir dosya uzantısı listesine güvenmek yerine belirli bir yanıtın ölçülmüş çıktısını kontrol etmektir; çünkü biçim ve içerik değişir.

Sıkıştırmanın altında “işe yaramadığı” tek bir evrensel minimum yanıt boyutu da yoktur. Çerçeveleme ve meta veri yükü, küçük veya zaten yoğun gövdelerde tasarrufu ortadan kaldırabilir; ancak başabaş noktasının nerede olduğu codec’e, uygulamaya, yanıt başlıklarına ve içeriğin kendisine bağlıdır. Lighthouse’un kendi 1,4 KiB / %10 tasarruf eşikleri (yukarıda), genel bir boyut tabanı değil, o denetime özgü bastırma kuralıdır. Bir CDN, yanıtı sıkıştırmaya ne zaman değeceğine ilişkin kendi farklı minimumunu yayımlayabilir (ve çoğu zaman yayımlar). Evidence for this claim Framing and metadata overhead can erase savings for small or poorly compressible bodies; there is no universal minimum response size because codec, implementation, headers and content determine the break-even point. Scope: lab audit Confidence: high · Verified: Enable text compression

Sıkıştırma ve BREACH — sınırlı bir risk, site genelinde sıkıştırmayı kapatma gerekçesi değil

Tedbir amacıyla sıkıştırmayı kapatmanızı öneren güvenlik tavsiyeleri görebilirsiniz. Bunu genellemeyin. BREACH türü risk, soyut olarak “sıkıştırmanın” bir özelliği değildir. Özgün araştırma belirli bir saldırı biçimini açıklar: (1) sıkıştırılan, (2) gizli bir değeri (CSRF belirteci gibi) (3) aynı yanıta yansıtılan, saldırganın etkileyebildiği içerikle birleştiren ve (4) saldırganın tekrarlanan isteklerde sıkıştırılmış yanıt uzunluğunu gözlemleyerek gizli değerin her seferinde bir baytını çıkarabildiği bir HTTP yanıtı. Apache’nin mod_deflate belgeleri, BREACH’e özgü incelemeye değer olanın tam olarak bu birleşim olduğunu belirtir. Yanıtlarınız sıkıştırılmış gövdede gizli bir değerle saldırganın kontrol ettiği yansıtılmış girdiyi birleştirmiyorsa klasik saldırı geçerli değildir. Çözüm, tüm sitede metin sıkıştırmasını kapatmak değil, savunmasız belirli yanıtı/bağlamı inceleyip azaltım uygulamaktır (örneğin kullanıcı girdisini gizli değerlerin yanında yansıtmamak, her istek için belirteç eklemek veya hız sınırı uygulamak).

Evidence for this claim BREACH-style risk is not a reason to disable compression sitewide: the classic attack requires a compressible HTTP response that combines a secret with attacker-influenced reflection and observable repeated length; mitigate the vulnerable response/context with reviewed controls. Scope: security Confidence: high · Verified: BREACH: Reviving the CRIME Attack

Site haritası miti — sıkıştırmaya açıkça izin verilir

Yüksek sesle yapılmaya değer bir düzeltme: Sitemaps protokolü gzip ile sıkıştırılmış site haritalarına açıkça izin verir. Bazıları site haritası dosyasını gzip ile sıkıştıramayacağınıza veya sıkıştırmamanız gerektiğine inanır; bu yanlıştır. sitemaps.org protokolü, bant genişliğini azaltmak için gzip ile sıkıştırılmış site haritası dosyalarına (.xml.gz) izin verir; her iki motor da bunları kabul eder ve Bing’in kendi gönderim araçları da gzip’i destekler. Tek koşul olağandır: sıkıştırılmamış site haritası protokolün boyut sınırlarına (50 000 URL / sıkıştırılmamış 50 MB) uymaya devam etmelidir. Dosyayı aktarım sırasında gzip ile sıkıştırmak uygundur ve büyük site haritalarında teşvik edilir.

Sıkıştırmanın web performansındaki yeri

Sıkıştırma, bu kümedeki araçlardan biridir. Kritik oluşturma yolunun indirmesi gereken kritik baytları küçültür; TTFB ve sonraki LCP değerlerini düşürür; adlandırılmış bir PageSpeed Insights / Lighthouse denetimidir. Ayrıca önbelleğe alma (kodlama ve saklama) ve oluşturmayı engelleyen kaynaklarla (daha küçük engelleyici dosyalar daha erken görüntülenir) birlikte çalışır. Daha geniş araç seti için web performansı araçlarına bakın.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.