Pergunta

Nós já sabemos deflate codificação é um vencedor sobre gzip em relação a velocidade de codificação, descodificar 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 reivindicações deflate é "menos eficaz". Por quê?

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

Foi útil?

Solução

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

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

Mas a HTTP utiliza uma nomenclatura diferente :

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

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

Assim, para resumir:

  • gzip é a 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 "deflate" HTTP 1.1 codificações :?

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

"gzip" é o formato gzip, e "desinflar" é o formato zlib. Eles deveria ter chamado o segundo "zlib" em vez de confusão evitar com o formato de dados comprimidos 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 matérias pela specficiation desinflar no RFC 1951, mais notavelmente Microsoft . Assim, mesmo que a transferência "desinflar" codificação usando 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.

Outras dicas

Do meu testes mínimos parece mais HTTPds quer:

  1. não suportam deflate 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 e uso mod_negotiate pré-codificado (você pode até mesmo ter que usar tipo mapeia a preferir deflate).

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

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


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

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 segura para sempre enviar raw deflate para navegadores modernos ... apenas certifique-se seus é, na verdade, raw e não zlib.

Verifique 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 deflate sobre gzip.

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

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-lo.

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top