Gzip ve Deflate, veri boyutunu küçülten sıkıştırma algoritmalarıdır, ancak sonuç metin değil ikilidir. Bu sıkıştırılmış veriler metin için tasarlanmış bir kanaldan (URL, çerez, JSON alanı) geçmesi gerekiyorsa, ayrıca Base64 ile kodlanır — bu yüzden "Gzip/Deflate ↔ Base64" ikilisi ortaya çıkar; birçok araç bir uygulamanın tüm durumunu paylaşılabilir bir bağlantıya bu şekilde sığdırır.
Türkçe'nin eklemeli yapısı sıkıştırmaya neden bu kadar uygun
Türkçe, kelime köküne art arda ekler getirerek yeni anlamlar oluşturan eklemeli (sondan eklemeli) bir dildir — "ev", "evler", "evlerimizden", "evlerimizdekilerden" gibi. Bu ekler (-ler, -imiz, -den, -ki) metin boyunca sürekli tekrar eder, ve Deflate algoritması tam olarak bu tür tekrar eden alt dizileri daha kısa referanslarla değiştirerek çalışır — bu yüzden uzun, ek yüklü Türkçe metinler genelde beklenenden verimli sıkışır.
Tipik işlem sırası
- Orijinal metin Gzip veya Deflate ile sıkıştırılır — boyut küçülür.
- Sıkıştırılmış ikili sonuç Base64 ile kodlanır — boyut biraz geri büyür, ama veri artık metindir.
- Ortaya çıkan dize, bir metin kanalı üzerinden güvenle iletilir.
Çözme işlemi ters sırada gerçekleşir: önce Base64 → ikili veri, sonra Gzip/Deflate sıkıştırmasını açma → orijinal metin.
Yaygın kullanım alanları
- Bir uygulamanın tüm durumunu bir URL'ye sığdırmak, böylece paylaşılan bağlantı tam olarak bırakıldığı görünümü açar.
- Sıkıştırılmış verileri bir çerezde veya bir veritabanının metin alanında saklamak.
- Hata ayıklama: üçüncü taraf bir sistem veya API tarafından bu şekilde kodlanmış içeriği açıp okumak.
Gzip'e karşı "ham" Deflate
Gzip, aslında Deflate algoritmasının etrafındaki bir sarmalayıcı formattır: sıkıştırılmış verinin üzerine kendi başlığını ve bir kontrol toplamını (CRC-32) ekler. "Ham" Deflate bu ek baytlara sahip değildir, bu yüzden sonuç biraz daha kompakttır, ancak bunun tam olarak ham format olduğu açıkça belirtilmeden bir gzip aracıyla açılamaz. Bu iki varyantın karıştırılması, verileri açmaya çalışırken alınan "invalid header" hatasının yaygın bir nedenidir.