Apache: compactando como zip (não gzip)

Apache: compactando como zip (não gzip)

Eu configurei apache 2.4para compactar o conteúdo antes de ele ser entregue ao cliente, usando mod_deflatee o cabeçalho do cliente definido como "Accept-Encoding: gzip". Então isso eu já comecei a trabalhar, produzindo um arquivo gzipado válido:

curl --header "Accept-Encoding: gzip" https://my.website/ > content.gz

Existe uma maneira de permitir "Accept-Encoding: zip"a compactação como zip?

Pelo que entendi a documentação, isso parece não ser possível:

A codificação gzip é a única suportada para garantir compatibilidade completa com implementações de navegadores antigos. A codificação deflate não é suportada... (https://httpd.apache.org/docs/2.4/mod/mod_deflate.html)

A pergunta vem de um Windowsusuário que não consegue descompactar gziparquivos (acho que usando apenas ferramentas nativas do Windows).

[editar: como observou gerald-schneider, um navegador descompactará automaticamente o conteúdo - mas estamos usando curlessas ferramentas de linha de comando para poder criar scripts para a API e, portanto, não há nenhum navegador envolvido. Obrigado também a todas as outras respostas e comentários, acho que deveria ter sido mais preciso, ou seja, anotar o curlcomando para começar].

Responder1

Acho que você entendeu mal para que serve a compactação no protocolo HTTP. Não é para baixar arquivos. É para reduzir os dados que são transferidos quando você está apenas navegando. Os arquivos compactados por ele são HTML, CSS, JavaScripts e imagens. A descompactação é feita pelo navegador antes de exibir as páginas. E os navegadores podem lidar perfeitamente com o gzip no Windows.

Responder2

Como apontado na citação da documentação do apache pela pergunta, énãoé possível configurar o apache para servir conteúdo compactado zipcom o mod_deflatecabeçalho do cliente definido como Accept-Encoding: zip. Só gzipfunciona. Se um usuário usar umnavegadoresse navegador irá decodificá-lo instantaneamente. Se o usuárioTransferênciaso conteúdo, por exemplo, curlela tem que compactar o gzipconteúdo ed, seja com ferramentas nativas do sistema operacional ou instaladas (estas últimas necessárias, por exemplo, para usuários do Windows).

Responder3

Lendo seu comentário, não tenho certeza do que você está perguntando:

  • Você deseja que seu servidor Apache envie um arquivo normal (pense em HTML ou texto simples) com codificação Zip em vez de Gzip? (Impossível conforme documentação)
  • Você deseja que o curl possa buscar dados do seu servidor? (nesse caso, você não precisa se preocupar com a codificação, pois é apenas uma otimização de rede "menor")
  • Você quer que o curl baixe algum conteúdo zip? Nesse caso, você deve configurar o httpd para que ele sirva diretamente seu arquivo zip com algumas configurações de "arquivo estático"

De qualquer forma, não tenho certeza se a codificação do conteúdo é o que você está procurando aqui...

informação relacionada