Apache tarafından sunulan metin dosyaları için neden gzip yerine deflate kullanıyorsunuz?
Basit cevap yok .
RFC 2616 deflasyonu şu şekilde tanımlar:
deflat RFC 1950'de tanımlanan RFC 1951'de tanımlanan "deflate" sıkıştırma mekanizması ile birlikte tanımlanan "zlib" formatı
Zlib biçimi RFC 1950'de şu şekilde tanımlanır :
0 1
+---+---+
|CMF|FLG| (more-->)
+---+---+
0 1 2 3
+---+---+---+---+
| DICTID | (more-->)
+---+---+---+---+
+=====================+---+---+---+---+
|...compressed data...| ADLER32 |
+=====================+---+---+---+---+
Yani, birkaç başlık ve bir ADLER32 sağlama toplamı
RFC 2616, gzip'i şu şekilde tanımlar:
gzip Dosya sıkıştırma programı "gzip" (GNU zip) tarafından RFC 1952'de [25] açıklandığı gibi üretilen bir kodlama formatı. Bu format, 32 bit CRC'li bir Lempel-Ziv kodlamasıdır (LZ77).
RFC 1952 , sıkıştırılmış verileri şu şekilde tanımlar:
Biçim şu anda DEFLATE sıkıştırma yöntemini kullanmaktadır ancak diğer sıkıştırma yöntemlerini kullanmak için kolayca genişletilebilir.
CRC-32, ADLER32'den daha yavaş
Aynı uzunlukta bir döngüsel artıklık kontrolü ile karşılaştırıldığında, hız için güvenilirlik sağlar (ikincisini tercih eder).
Yani ... sıkıştırma için aynı algoritmayı kullanan 2 sıkıştırma mekanizmamız var , ancak başlıklar ve sağlama toplamı için farklı bir algoritma var.
Şimdi, altta yatan TCP paketleri zaten oldukça güvenilir , bu nedenle buradaki sorun Adler 32 vs GZIP'in kullandığı CRC-32 değil.
Yıllar boyunca birçok tarayıcı yanlış bir deflate algoritması uyguladı. RFC 1950'de zlib başlığını beklemek yerine sıkıştırılmış yükü beklediler. Benzer şekilde çeşitli web sunucuları da aynı hatayı yaptı.
Bu nedenle, tarayıcılar yıllar boyunca bulanık bir mantık söndürme uygulamasını uygulamaya başladılar, zlib başlığı ve adler sağlama toplamı için çalışırlar, eğer bu başarısız olursa yük için dener.
Böyle karmaşık bir mantığa sahip olmanın sonucu, genellikle kırılmış olmasıdır. Verve Studio'nun durumun ne kadar kötü olduğunu gösteren kullanıcı katkısı olan bir test bölümü var.
Örneğin: deflate Safari 4.0'da çalışır, ancak Safari 5.1'de bozulur, IE'de de her zaman sorunları vardır.
Bu nedenle, yapılacak en iyi şey, tamamen söndürülmekten kaçınmaktır, küçük hız artışı (adler 32 nedeniyle) kırık yük taşıma riskine değmez.