Eu configurei apache 2.4
para compactar o conteúdo antes de ele ser entregue ao cliente, usando mod_deflate
e 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 Windows
usuário que não consegue descompactar gzip
arquivos (acho que usando apenas ferramentas nativas do Windows).
[editar: como observou gerald-schneider, um navegador descompactará automaticamente o conteúdo - mas estamos usando curl
essas 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 curl
comando 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 zip
com o mod_deflate
cabeçalho do cliente definido como Accept-Encoding: zip
. Só gzip
funciona. Se um usuário usar umnavegadoresse navegador irá decodificá-lo instantaneamente. Se o usuárioTransferênciaso conteúdo, por exemplo, curl
ela tem que compactar o gzip
conteú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...