Pourquoi utiliser deflate au lieu de gzip pour les fichiers texte servis par Apache?
La réponse simple est non .
La RFC 2616 définit le dégonflage comme:
dégonfler Le format "zlib" défini dans la RFC 1950 en combinaison avec le mécanisme de compression "dégonfler" décrit dans la RFC 1951
Le format zlib est défini dans la RFC 1950 comme:
0 1
+---+---+
|CMF|FLG| (more-->)
+---+---+
0 1 2 3
+---+---+---+---+
| DICTID | (more-->)
+---+---+---+---+
+=====================+---+---+---+---+
|...compressed data...| ADLER32 |
+=====================+---+---+---+---+
Donc, quelques en-têtes et une somme de contrôle ADLER32
La RFC 2616 définit gzip comme:
gzip Un format de codage produit par le programme de compression de fichiers "gzip" (GNU zip) comme décrit dans la RFC 1952 [25]. Ce format est un codage Lempel-Ziv (LZ77) avec un CRC 32 bits.
La RFC 1952 définit les données compressées comme:
Le format utilise actuellement la méthode de compression DEFLATE mais peut être facilement étendu pour utiliser d'autres méthodes de compression.
CRC-32 est plus lent que ADLER32
Par rapport à un contrôle de redondance cyclique de même longueur, il échange la fiabilité contre la vitesse (préférant ce dernier).
Donc ... nous avons 2 mécanismes de compression qui utilisent le même algorithme pour la compression, mais un algorithme différent pour les en-têtes et la somme de contrôle.
Maintenant, les paquets TCP sous-jacents sont déjà assez fiables , donc le problème ici n'est pas Adler 32 vs CRC-32 que GZIP utilise.
Il s'avère que de nombreux navigateurs au fil des ans ont mis en œuvre un algorithme de dégonflage incorrect. Au lieu d'attendre l'en-tête zlib dans la RFC 1950, ils s'attendaient simplement à la charge utile compressée. De même, divers serveurs Web ont fait la même erreur.
Ainsi, au fil des ans, les navigateurs ont commencé à implémenter une implémentation de dégonflage de logique floue , ils essaient pour l'en-tête zlib et la somme de contrôle adler, si cela échoue, ils essaient pour la charge utile.
Le résultat d'une logique complexe comme celle-ci est qu'elle est souvent brisée. Verve Studio a une section de test contribuée par l'utilisateur qui montre à quel point la situation est mauvaise.
Par exemple: dégonfler fonctionne dans Safari 4.0 mais est cassé dans Safari 5.1, il a également toujours des problèmes sur IE.
Donc, la meilleure chose à faire est d'éviter complètement le dégonflage, l'augmentation de vitesse mineure (due à l'adler 32) ne vaut pas le risque de charges utiles cassées.