Skip to content

Glossary

DEFLATE

Webin yarısının arkasındaki kayıpsız sıkıştırma

By Published Updated

DEFLATE, RFC 1951'de belirtilen kayıpsız veri sıkıştırma algoritmasıdır. İki tekniği birleştirir: LZ77 (tekrarlanan alt dizeleri bulma ve bunları geri referanslarla değiştirme) ve Huffman kodlaması (daha yaygın sembollere daha kısa ikili kodlar atama).

DEFLATE, PNG görüntü dosyaları, ZIP arşivleri, gzip sıkıştırılmış dosyalar (HTTP Content-Encoding: gzip dahil), zlib kütüphane veri akışları ve Git'in paket dosyalarının arkasındaki sıkıştırma algoritmasıdır. Bilişim tarihinde muhtemelen en çok dağıtılan sıkıştırma algoritmasıdır.

Özellikleri:

  • Kayıpsız — orijinal baytlar tam olarak kurtarılabilir.
  • Sıkıştırmayı açmak hızlı, sıkıştırmak orta hızda.
  • Harici sözlük yok, bu nedenle her DEFLATE akışı kendi kendine yeterlidir.
  • Metin ve yapılandırılmış veri için iyi; zaten sıkıştırılmış medya için orta düzey.

Daha yeni algoritmalar (Brotli, Zstandard) daha iyi sıkıştırma sağlar ve web'de giderek daha yaygın hale gelir; ancak DEFLATE, her tarayıcı, işletim sistemi ve araç onu desteklediğinden evrensel geri düşme noktası olmaya devam eder.

Patent-ücretsiz köken hikayesi: Phil Katz, DEFLATE'i 1993'te PKZIP için tasarladı ve telif hakkından muaf olarak açıkça yayımladı. Bu karar, DEFLATE'in — LZW (Unisys 2003'e kadar patent sahibiydi) veya aritmetik kodlama (IBM patentlemişti) değil — evrensel varsayılan haline gelmesinin nedenidir. zlib kütüphanesi (Mark Adler ve Jean-loup Gailly, 1995), izin verici lisans altında temiz bir referans uygulama sağladı ve böylece her işletim sistemi, tarayıcı ve dil çalışma zamanı aynı kodu paketleyebildi.

Brotli'nin DEFLATE'in başarısız olduğu yerde nasıl kazandığı: Brotli (Google, 2013), tipik web metninde gzip'e göre %20-25 daha iyi sıkıştırma elde eder; çünkü yaygın HTML, CSS ve JavaScript parçaları içeren 120 KB'lık statik bir sözlükle birlikte gelir. Zstandard (Facebook, 2016), çok daha hızlı kod çözme hızı için biraz sıkıştırmayı feda eder ve artık Linux çekirdeği ve birçok yedekleme/arşivleme iş akışı için varsayılandır. Accept-Encoding: gzip, br, zstd görüşmeleri sunucunun istemcinin desteklediği birini seçmesine izin verir. İlgili: kayıpsız, ETag. Referans: RFC 1951 — DEFLATE Sıkıştırılmış Veri Biçimi Belirtimi.

Neden önemlidir: ölçülmüş örnek

Tipik 100 KB boyutunda küçültülmüş jQuery 3.7 kaynak dosyası (102.310 bayt sıkıştırılmamış) alın. Varsayılan sıkıştırma düzeylerinde: gzip (DEFLATE düzey 6) yaklaşık 36.200 bayt üretir — %64,6 azalma. Brotli kalite 11'de aynı dosyayı yaklaşık 28.400 bayta düşürür (%72,2 azalma). Zstd düzey 19 ise yaklaşık 30.100 bayta iner. Farklar tek başına küçük görünür; ancak birleşir: tipik bir e-ticaret sayfası ~250 KB JS, CSS ve HTML gönderir; bu nedenle gzip'ten Brotli'ye geçmek, iletim sırasında yaklaşık 20 KB tasarruf sağlar. Brotli kod çözme asimetriktir: kalite 11'de kodlama yavaştır (~50 ms); ancak kod çözme gzip ile neredeyse aynı hızdadır; bu nedenle doğru örüntü, statik varlıkları derleme zamanında önceden sıkıştırmak ve dinamik yanıtlar için anında Brotli'yi atlamaktır.

Düzeyler ve hız/oran dengesi

DEFLATE'in dokuz sıkıştırma düzeyi (1-9), kodlama süresini çıktı boyutuyla değiş tokuş eder. Düzey 1, düzey 9'dan kabaca 5× hızlıdır ve yaklaşık %10-15 daha büyük çıktı üretir. Çoğu web sunucusu eğrinin bükülme noktasında duran düzey 6'yı varsayılan alır. pigz paralel uygulaması, girişi bağımsız bloklara bölerek çok çekirdekli makinelerde arşivleme iş yükleri için düzey 9'u uygun maliyetli kılar. Bu ayarların hiçbiri kod çözme hızını etkilemez — kod çözücü sabit verimde kodlayıcının ürettiğini okur. Referans: RFC 1952 — GZIP dosya biçimi belirtimi.

Frequently asked questions

DEFLATE nedir?
DEFLATE, LZ77 (önceki tekrarlanan dizelere geri referanslar) ve Huffman kodlamasını (sık semboller için değişken uzunluklu kodlar) birleştiren kayıpsız bir sıkıştırma algoritmasıdır. RFC 1951'de tanımlanmıştır ve ZIP arşivleri, gzip ve PNG görüntüleri içindeki sıkıştırma motorudur.
DEFLATE pratikte nasıl kullanılır?
Bir tarayıcı web sayfası istediğinde sunucu genellikle Content-Encoding: gzip ile yanıt verir — bu, gzip başlıklı bir DEFLATE sıkıştırılmış akıştır. HTML, CSS ve JS dosyaları %60-80 sıkıştırılarak yavaş bağlantılarda aktarım süresini önemli ölçüde azaltır.
DEFLATE, gzip ve zlib arasındaki fark nedir?
DEFLATE, çekirdek algoritmadır. zlib, DEFLATE'i küçük bir başlık ve Adler-32 sağlama toplamıyla sarar (PNG ve HTTP zlib kodlaması içinde kullanılır). Gzip, DEFLATE'i dosya adı ve CRC-32 içeren daha büyük bir başlıkla sarar (dosyalar ve HTTP gzip kodlaması için kullanılır). Sıkıştırılmış veri aynıdır; yalnızca sarmalayıcı farklıdır.
DEFLATE, Brotli ve Zstandard ile nasıl karşılaştırılır?
Brotli (modern HTTP sıkıştırmasında kullanılır) ve Zstandard, web içeriğinde DEFLATE/gzip'e göre tipik olarak %15-25 daha iyi sıkıştırma sağlar. DEFLATE, ZIP, PNG ve PDF formatlarına entegre olduğu ve on yıllık donanım ile yazılım desteğine sahip olduğu için her yerde yaygınlığını korur.

Related

Published May 14, 2026 · Last reviewed May 31, 2026