MISE À JOUR du 10 février 2012:
zOompf a réalisé des recherches très approfondies sur ce sujet très ici . Il l'emporte sur toutes les conclusions ci-dessous.
MISE À JOUR du 11 septembre 2010:
Une plateforme de test a été créée pour cela ici
Définitions HTTP 1.1 de GZIP et DEFLATE (zlib) pour quelques informations générales:
"'Gzip' est le format gzip, et 'deflate' est le format zlib . Ils auraient probablement dû appeler le second 'zlib' à la place pour éviter toute confusion avec le format de données compressées brutes deflate. Alors que le HTTP 1.1 RFC 2616 pointe correctement vers la spécification zlib dans la RFC 1950 pour le codage de transfert 'deflate', il y a eu des rapports de serveurs et de navigateurs qui produisent ou s'attendent à des données brutes de deflate selon la spécification de deflate de la RFC 1951, notamment les produits Microsoft . Donc, même si le 'deflate' le codage de transfert utilisant le format zlib serait l'approche la plus efficace ( ), l'utilisation du codage de transfert 'gzip' est probablement plus fiable en raison d'un choix de nom malheureux de la part des auteurs HTTP 1.1." (la source: et en fait exactement ce pour quoi le format zlib a été conçu http://www.gzip.org/zlib/zlib_faq.html )
Donc, ma question: si j'envoie des données RAW deflate sans emballage zlib (ou gzip, d'ailleurs) y a-t-il des navigateurs modernes (par exemple, IE6 et plus, FF, Chrome, Safari, etc.) qui ne peuvent PAS comprendre le dégonflage brut données compressées (en supposant que l'en-tête de requête HTTP "Accept-Encoding" contient "deflate")?
Les données de dégonflage seront TOUJOURS quelques octets plus petites que GZIP.
Si tous ces navigateurs parviennent à décoder les données, quels inconvénients y a-t-il à envoyer RAW deflate au lieu de zlib?
MISE À JOUR du 11 septembre 2010:
Une plateforme de test a été créée pour cela ici
la source
Réponses:
MISE À JOUR: Les navigateurs ont abandonné la prise en charge du dégonflage brut. zOompf a réalisé des recherches très approfondies sur ce sujet très ici . Malheureusement, il semble que le dégonflage brut n'est PAS sûr à utiliser.
Consultez http://www.vervestudios.co/projects/compression-tests/results pour plus de résultats.Voici les navigateurs qui ont été testés:* Android envoie l'en-tête de la requête HTTP "Accept-Encoding: gzip". Le dégonflage n'est pas autorisé.
J'en conclus que nous pouvons toujours envoyer du DEFLATE brut (lorsque l'en-tête de la requête HTTP "Accept-Encoding" contient "deflate") et le navigateur pourra interpréter correctement les données encodées. Quelqu'un peut-il prouver que c'est faux?
Remarque: l'implémentation native de .NET de DEFLATE (System.IO.Compression.DeflateStream) est DEFLATE brut. Ça craint aussi. Veuillez utiliser zlib.net pour tous vos besoins de dégonflage .NET.la source
Le navigateur Android 1.6 (v4) échoue à la fois au test zlib et au test de dégonflage sur votre page. Je l'ai ajouté à votre liste.
la source
N'est-il pas vrai que l'
AddOutputFilterByType DEFLATE
utilisation de mod_deflate envoie par défaut gzip?la source
AddOutputFilertByType DEFLATE
gzips la réponse au lieu de la dégonfler par défaut (pour autant que je sache).Gzip
estdeflate
+ un en-tête de 10 octets + un pied de page de 8 octets - ce qui signifie que ceGzip
sera TOUJOURS plus grand quedeflate
... alors pourquoi devrions-nous utiliser gzip? (voir en.wikipedia.org/wiki/Gzip#File_format pour une description de la composition de gzip). Cela dit, je ne sais pas comment définirdeflate
la méthode de compression préférée dans Apache.pour autant que je sache, oui - à peu près vous "pouvez toujours envoyer du DEFLATE brut et tout irait bien" ... il n'y en a pas "toujours", mais la plupart de tous les cas. sinon, c'est le problème du navigateur.
la source
deflate
(c'est-à-dire pas zlib , pas d'en-tête du tout) ne fonctionnera dans IE7 que siencoding:gzip
et (testé uniquement dans chrome v24)encoding:deflate
dans chrome .