UnZstd#
O módulo Para instalar o módulo, use um dos seguintes pacotes: Angie: Angie PRO: O módulo fornece as seguintes diretivas: Para usar o módulo, ele deve ser carregado no contexto Vamos comprimir o arquivo de teste Se o cliente suportar Zstandard, ele receberá o arquivo comprimido sem alterações: Se o cliente não suportar Zstandard, o módulo O arquivo Versão: 658990e Documentação detalhada e código-fonte estão disponíveis em:
HanadaLee/ngx_http_unzstd_filter_moduleunzstd descomprime respostas do backend comprimidas com
Zstandard (Content-Encoding: zstd) para clientes que não aceitam essa
codificação. Assim, o backend pode armazenar seus dados comprimidos,
economizando espaço em disco e E/S, e todos os clientes ainda recebem uma
resposta que conseguem ler.Instalação#
angie-module-unzstdangie-pro-module-unzstdDiretivas#
unzstd — similar a gunzipunzstd_buffers — similar a gunzip_buffersunzstd_force — descomprime as respostas mesmo para clientes que
aceitam Zstandardunzstd_dict_file — define o arquivo de dicionário para respostas
comprimidas com um dicionário Zstandard; permitida somente no contexto
httpCarregando o módulo#
main{}:load_module modules/ngx_http_unzstd_filter_module.so;
Exemplo de configuração#
server {
listen 80 default_server;
location / {
root /usr/share/angie/html;
index index.html;
}
location /storage {
unzstd on;
proxy_pass http://127.0.0.1:8080;
}
}
# Backend
server {
listen 8080;
location /storage {
root /usr/share/angie;
rewrite ^(.*)$ $1.zst break; # Return the compressed file with .zst suffix
add_header Content-Encoding zstd; # Indicate Zstandard compression in the response header
}
}
Demonstração#
sample.txt com o utilitário
zstd e colocar o resultado onde o backend o serve:$ zstd -19 sample.txt -o sample.txt.zst
sample.txt : 24.11% ( 1.43 MiB => 353 KiB, sample.txt.zst)
$ sudo mkdir -p /usr/share/angie/storage
$ sudo cp sample.txt.zst /usr/share/angie/storage/
$ wc -c /usr/share/angie/storage/sample.txt.zst
361662 /usr/share/angie/storage/sample.txt.zst
$ curl -s -H 'Accept-Encoding: zstd' -o received.zst localhost/storage/sample.txt
$ wc -c received.zst
361662 received.zst
unzstd descomprimirá
o arquivo antes de enviá-lo:$ curl -s -o received.txt localhost/storage/sample.txt
$ wc -c received.txt
1500092 received.txt
received.txt contém o texto original de 1500092 bytes,
idêntico a sample.txt, e não os dados comprimidos de 361662 bytes.Informações adicionais#