Por que os servidores reais preferem gzip sobre codificação deflate?

votos
57

Nós já sabemos desinflar codificação é um vencedor sobre gzip em relação à velocidade de codificação, decodificação e tamanho de compressão.

Então, por que há grandes sites (que posso encontrar) enviá-lo (quando eu uso um navegador que aceita-lo)?

Yahoo afirma deflate é menos eficaz. Por quê?

I manter o software do servidor HTTP que prefere esvaziar, então eu gostaria de saber se há alguma boa razão para não continuar fazendo isso.

Publicado 19/05/2009 em 17:38
fonte usuário
Em outras línguas...                            


6 respostas

votos
68

Existe alguma confusão sobre a nomenclatura entre as especificações e o HTTP:

  • DEFLATE como definido por RFC 1951 é um formato de dados comprimidos .
  • ZLIB conforme definido pela RFC 1950 é um formato de dados comprimido que usa o DEFLATE formato de dados.
  • GZIP conforme definido pela RFC 1952 é um formato de arquivo que usa o DEFLATE formato de dados comprimidos.

Mas o HTTP utiliza uma nomenclatura diferente :

  • gzipUm formato de codificação produzida pela compressão de ficheiros de programa "gzip" (GNU zip) como descrito na RFC 1952 [25]. Este formato é um Lempel-Ziv (LZ77) com uma CRC de 32 bits.

  • deflate O formato "zlib" definido em [31] RFC 1950 em combinação com o mecanismo de compressão "esvaziar" descrito em [29] RFC 1951.

Entao, para resumir:

  • gzipé o GZIP formato de arquivo.
  • deflateé realmente o ZLIB formato de dados. (Mas alguns clientes também não aceitar o real DEFLATE formato de dados para deflate.)

Veja também esta resposta sobre a questão Qual é a diferença entre o "gzip" e "desinflar" HTTP 1.1 codificações? :

Qual é a diferença entre o "gzip" e "esvaziar" HTTP 1.1 codificações?

"Gzip" é o formato gzip, e "desinflar" é o formato zlib. Eles deveria ter chamado o segundo "zlib" em vez de evitar confusão com o formato de dados comprimido deflate cru. Enquanto o HTTP 1.1 RFC 2616 corretamente aponta para a especificação zlib no RFC 1950 para a "desinflar" codificação de transferência, tem havido relatos de servidores e navegadores que incorretamente produzem ou esperar dados deflate bruto pelo specficiation desinflar no RFC 1951, mais notavelmente Microsoft . Assim, mesmo que a codificação de transferência "desinflar" utilizando o formato zlib seria a abordagem mais eficiente (e, na verdade exatamente o que o formato zlib foi projetado para), usando o "gzip" codificação de transferência é provavelmente mais confiável devido a uma escolha infeliz de nome na parte do HTTP 1.1 autores.

Respondeu 16/10/2009 em 19:01
fonte usuário

votos
9

Do meu testes mínimos parece mais HTTPds quer:

  1. não suportam desinflar on-the-fly: mod_deflate do Apache (uma surpresa), GWS
  2. ou preferem enviar gzip: IIS, mod_compress do lighttpd

Assim, para enviar desinflar no servidor mais popular (Apache), você deve manter arquivos pré-codificado e usar mod_negotiate (você pode até ter que usar o tipo de mapas-a preferir deflate).

Eu acho que, devido a este aborrecimento, desinflar é apenas raramente usado e, portanto, os erros são mais prováveis de existir em apoio deflate cliente do que em apoio gzip.

Respondeu 21/05/2009 em 16:48
fonte usuário

votos
7

Confira o site para mais informações: http://web.archive.org/web/20120321182910/http://www.vervestudios.co/projects/compression-tests


Desinflar, por spec, é realmente zlib (um formato de compressão desenvolvido especificamente para streaming de conteúdo via web) ... que é um invólucro em torno desinflar.

Internet Explorer, no entanto, incorretamente implementa HTTP 1.1 deflate (zlib) como desinflar cru. Então, se o servidor envia conteúdo HTTP correta 1.1 deflate (zlib) para IE ele se engasga.

Eu pesquisei o tema um pouco e parece seguro enviar SEMPRE matéria deflate para navegadores modernos ... apenas certifique-se a sua é, na verdade, crua e não zlib.

Confira este artigo para obter mais informações> Gzip vs Deflate (zlib) revisitado .

Então eu acho que há uma boa razão para continuar a enviar desinflar sobre gzip.

Respondeu 16/10/2009 em 18:32
fonte usuário

votos
5

Tanto quanto eu sei (disclaimer: e eu não sou um perito aqui, apenas o que eu ouvi), gzipusa o mesmo algoritmo deflate, mas tem mais coisas cabeçalho que fazê-lo ter um tamanho maior (em relação ao deflate). No entanto, eu acho que deflateé suportado pelo menos clientes e proxies.

Respondeu 19/05/2009 em 17:42
fonte usuário

votos
1

Eu me perguntava a mesma coisa :). Eu acho que pode ser a ver com a compatibilidade dos mais velhos (possivelmente antigos) navegadores. Eu li em algum lugar que os navegadores mais velhos são mais propensos a rastejar para fora pelo conteúdo esvaziado que mod_gzipped em certos casos (?), Mas googling isso me levou a concluir que provavelmente é melhor parar pesquisando isso.

Respondeu 19/05/2009 em 17:48
fonte usuário

votos
0

ActionScript 3 tem suporte deflate nativa, mas para gzip você precisa usar uma biblioteca externa

Respondeu 18/01/2010 em 13:59
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more