UPDATE 10 Feb 2012:
zOompf telah menyelesaikan beberapa penelitian yang sangat menyeluruh tentang topik ini di sini . Ini mengalahkan semua temuan di bawah ini.
UPDATE 11 Sept 2010:
Sebuah platform pengujian telah dibuat untuk ini di sini
Definisi HTTP 1.1 dari GZIP dan DEFLATE (zlib) untuk beberapa informasi latar belakang:
"'Gzip' adalah format gzip, dan 'deflate' adalah format zlib . Mereka mungkin seharusnya memanggil yang kedua 'zlib' sebagai gantinya untuk menghindari kebingungan dengan format data terkompresi mentah deflate. Sementara HTTP 1.1 RFC 2616 dengan benar menunjuk ke spesifikasi zlib di RFC 1950 untuk pengkodean transfer 'deflate', ada laporan server dan browser yang salah menghasilkan atau mengharapkan data deflate mentah sesuai spesifikasi deflate di RFC 1951, terutama produk Microsoft . Jadi, meskipun 'deflate' transfer encoding menggunakan format zlib akan menjadi pendekatan yang lebih efisien ( dan sebenarnya untuk apa format zlib itu dirancang), menggunakan pengkodean transfer 'gzip' mungkin lebih dapat diandalkan karena pilihan nama yang tidak tepat pada bagian penulis HTTP 1.1. "(sumber: http://www.gzip.org/zlib/zlib_faq.html )
Jadi, pertanyaan saya: jika saya mengirim data deflate RAW tanpa pembungkus zlib (atau gzip, dalam hal ini) apakah ada browser modern (misalnya, IE6 dan lebih tinggi, FF, Chrome, Safari, dll) yang TIDAK dapat memahami deflate mentah data terkompresi (dengan asumsi header permintaan HTTP "Terima-Encoding" berisi "deflate")?
Deflasi data akan SELALU lebih kecil beberapa byte dari GZIP.
Jika semua browser ini berhasil memecahkan kode data, apa kerugiannya mengirim deflate RAW daripada zlib?
UPDATE 11 Sept 2010:
Sebuah platform pengujian telah dibuat untuk ini di sini
sumber
Jawaban:
UPDATE: Browser telah menjatuhkan dukungan untuk deflate mentah. zOompf telah menyelesaikan beberapa penelitian yang sangat menyeluruh tentang topik ini di sini . Sayangnya, tampaknya raw deflate TIDAK aman digunakan.
Periksa http://www.vervestudios.co/projects/compression-tests/results untuk hasil lebih lanjut.Berikut adalah browser yang telah diuji:* Android Mengirim header permintaan HTTP "Terima-Encoding: gzip". Mengempis tidak diizinkan.
Saya menyimpulkan bahwa kami selalu dapat mengirim DEFLATE mentah (ketika header permintaan HTTP "Terima-Encoding" berisi "deflate") dan browser akan dapat menafsirkan data yang disandikan dengan benar. Bisakah seseorang membuktikan ini salah?
Catatan: Implementasi asli .NET dari DEFLATE (System.IO.Compression.DeflateStream) adalah DEFLATE mentah. Itu juga menyebalkan. Harap gunakan zlib.net untuk semua kebutuhan Anda yang mengecilkan .NET.sumber
Browser Android 1.6 (v4) gagal dalam uji zlib dan deflate pada halaman Anda. Saya telah menambahkannya ke daftar Anda.
sumber
Bukankah itu kasus yang
AddOutputFilterByType DEFLATE
menggunakan mod_deflate mengirim oleh gzip secara default?sumber
AddOutputFilertByType DEFLATE
gzips responnya dan bukan mengempiskannya secara default (sejauh yang saya tahu).Gzip
adalahdeflate
+ header 10 byte + footer 8 byte - yang berartiGzip
SELALU akan lebih besar darideflate
... jadi mengapa kita harus menggunakan gzip? (lihat en.wikipedia.org/wiki/Gzip#File_format untuk perincian tentang apa gzip dibuat). Dengan itu, saya tidak yakin bagaimana cara mengaturdeflate
sebagai metode kompresi yang disukai di Apache.Sejauh yang saya tahu, ya - cukup banyak Anda "selalu dapat mengirim DEFLATE mentah dan semuanya akan baik-baik saja" ... tidak ada "selalu", tetapi kebanyakan dari semua kasus. jika tidak, ini adalah masalah browser.
sumber
deflate
(misalnya, bukan zlib , tidak ada header sama sekali) hanya akan berfungsi di IE7 jikaencoding:gzip
dan (hanya diuji di chrome v24)encoding:deflate
di chrome .