ATUALIZAÇÃO em 10 de fevereiro de 2012:
zOompf concluiu algumas pesquisas muito completas sobre este mesmo tópico aqui . Ele supera qualquer descoberta abaixo.
ATUALIZAÇÃO 11 de setembro de 2010:
Uma plataforma de teste foi criada para isso aqui
Definições HTTP 1.1 de GZIP e DEFLATE (zlib) para algumas informações básicas:
"'Gzip' é o formato gzip e 'deflate' é o formato zlib . Eles provavelmente deveriam ter chamado o segundo de 'zlib' para evitar confusão com o formato de dados compactados de deflate bruto. Enquanto o HTTP 1.1 RFC 2616 aponta corretamente para a especificação zlib no RFC 1950 para a codificação de transferência 'deflate', houve relatos de servidores e navegadores que produzem incorretamente ou esperam dados deflate brutos de acordo com a especificação deflate no RFC 1951, mais notavelmente produtos da Microsoft . Portanto, embora o 'deflate' codificação de transferência usando o formato zlib seria a abordagem mais eficiente ( e de fato exatamente para o que o formato zlib foi projetado), usar a codificação de transferência 'gzip' é provavelmente mais confiável devido a uma escolha infeliz de nome por parte dos autores do HTTP 1.1. "(fonte: http://www.gzip.org/zlib/zlib_faq.html )
Então, minha pergunta: se eu enviar dados de deflate RAW SEM wrapper zlib (ou gzip, nesse caso), existem navegadores modernos (por exemplo, IE6 e superior, FF, Chrome, Safari, etc) que NÃO conseguem entender o deflate bruto dados compactados (assumindo que o cabeçalho de solicitação HTTP "Aceitar-Codificação" contém "deflate")?
Os dados de esvaziamento SEMPRE serão alguns bytes menores do que GZIP.
Se todos esses navegadores puderem decodificar os dados com sucesso, quais são as desvantagens de enviar RAW deflate em vez de zlib?
ATUALIZAÇÃO 11 de setembro de 2010:
Uma plataforma de teste foi criada para isso aqui
fonte
Respostas:
ATUALIZAÇÃO: os navegadores estão deixando de oferecer suporte para o deflate bruto. zOompf concluiu algumas pesquisas muito completas sobre este mesmo tópico aqui .Infelizmente, parece que o esvaziamento bruto NÃO é seguro para uso.
Verifica http://www.vervestudios.co/projects/compression-tests/results para obter mais resultados.Aqui estão os navegadores que foram testados:* Android Envia o cabeçalho da solicitação HTTP "Accept-Encoding: gzip". Esvaziar não é permitido.
Concluo que sempre podemos enviar DEFLATE bruto (quando o cabeçalho da solicitação HTTP "Accept-Encoding" contém "deflate") e o navegador será capaz de interpretar corretamente os dados codificados. Alguém pode provar que isso está errado?
observação: a implementação nativa do .NET de DEFLATE (System.IO.Compression.DeflateStream) é DEFLATE bruto. Também é uma merda. Use zlib.net para todas as suas necessidades de deflação .NET.fonte
O navegador Android 1.6 (v4) falha nos testes zlib e deflate em sua página. Eu adicionei à sua lista.
fonte
Não é o caso que
AddOutputFilterByType DEFLATE
usar mod_deflate envia por gzip por padrão?fonte
AddOutputFilertByType DEFLATE
gzips a resposta ao invés de esvaziá-la por padrão (até onde eu sei).Gzip
édeflate
+ um cabeçalho de 10 bytes + rodapé de 8 bytes - o que significa queGzip
SEMPRE será maior quedeflate
... então por que devemos usar o gzip? (veja en.wikipedia.org/wiki/Gzip#File_format para uma análise da composição do gzip). Com isso dito, não tenho certeza de como definirdeflate
como o método de compactação preferido no Apache.pelo que eu sei, sim - praticamente você "sempre pode enviar DEFLATE bruto e tudo ficaria bem" ... não há "sempre", mas acima de todos os casos. caso contrário, esse é o problema do navegador.
fonte
deflate
(ou seja, não zlib , sem cabeçalhos) só funcionará no IE7 seencoding:gzip
e (testado apenas no chrome v24)encoding:deflate
no chrome .