Interpretação do módulo Nginx gzip

Índice

Introdução básica ao gzip

Como funciona o gzip

gzip no Nginx

Não é recomendado habilitar o cenário gzip no Nginx


Introdução básica ao gzip

gzip é a abreviatura de GNUzip, que foi usado pela primeira vez para compactação de arquivos em sistemas UNIX. A codificação Gzip sobre o protocolo HTTP é uma tecnologia usada para melhorar o desempenho de aplicações Web. O servidor Web e o cliente (navegador) devem suportar gzip . Atualmente, todos os navegadores convencionais, como Chrome, Firefox, IE, etc., suportam este protocolo. Servidores comuns como Apache, Nginx e IIS também suportam gzip.

Como funciona o gzip

 

  • 1) O navegador solicita a URL e define o atributo accept-encoding:gzip no cabeçalho da solicitação. Indica que o navegador oferece suporte a gzip.
  • 2) Após receber a solicitação enviada pelo navegador, o servidor determina se o navegador suporta gzip. Se suportar gzip, enviará conteúdo compactado para o navegador. Se não suportar, enviará conteúdo descompactado para o navegador. Geralmente, navegadores e servidores suportam gzip, e os cabeçalhos de resposta retornados contêm codificação de conteúdo:gzip.
  • 3) Após receber a resposta do servidor, o navegador determina se o conteúdo está compactado, se estiver compactado, ele descompacta e exibe o conteúdo da página.

gzip no Nginx

A fim de melhorar a velocidade com que os usuários obtêm os dados de resposta, o servidor Nginx pode compactar os dados de resposta com gzip e reduzir o tamanho dos dados de resposta antes de enviá-los ao navegador do cliente. Em comparação com permitir que os usuários naveguem nas páginas da Web, o método acima exibe mais rápido.

Para ativar a função de compactação gzip de dados de resposta (módulo ngx_http_gzip_module), o navegador do usuário também precisa suportar a função de descompactação gzip

instrução Escopo valor padrão Opções de valor de comando Descrição da instrução
gzip http、servidor、localização、se estiver no local desligado ligado ou desligado Habilitar função gzip
gzip_buffers http、servidor、localização 32 4k ou 16 8k -- Definir buffer de compactação gzip
gzip_comp_level http、servidor、localização 1 -- Defina o nível de compactação gzip, o intervalo de valores é de 1 a 9. Quanto maior o valor deste comando, maior o grau de compactação.
gzip_disable http、servidor、localização -- -- Desative a compactação gzip quando o conteúdo do campo de atributo User-Agent no cabeçalho da solicitação corresponder ao valor do comando.
gzip_http_versão http、servidor、localização 1.1 1,0 ou 1,1 Define a versão mais antiga do protocolo HTTP para solicitações compactadas
gzip_min_length http、servidor、localização 20 -- Defina o comprimento mínimo dos dados de resposta com a compactação gzip habilitada, com base no valor de Content-Length no cabeçalho da resposta. Se Content-Length não existir, a diretiva é inválida; se o valor da diretiva for 0, significa toda a compactação
gzip_proxied http、servidor、localização desligado desativado ou expirado ou sem cache ou sem armazenamento ou privado ou no_last_modified ou no_etag ou auth ou qualquer Determine se deseja ativar a compactação gzip com base no campo de atributo do cabeçalho de resposta dos dados de resposta retornados pelo servidor proxy
gzip_types http、servidor、localização texto/html -- Defina o tipo MIME de dados de resposta que podem ser compactados com gzip. Quando o valor do comando é *, significa todos os tipos MIME.
gzip_vary http、servidor、localização desligado ligado ou desligado Adicione Vary:Accept-Encoding no cabeçalho de resposta e retorne-o ao proxy front-end ou servidor CDN para determinar se deve enviar uma cópia em cache gzip ao cliente para evitar que o proxy ou servidor CDN responda a uma cópia em cache que não tem compactação gzip. Navegador com recursos de descompactação

As opções de valor de comando da diretiva gzip_proxied são descritas a seguir:

  • off: desliga a função de comando;
  • expirado: se o cabeçalho da resposta HTTP contiver o campo de atributo Expira, a compactação será habilitada;
  • no-cache: Se o cabeçalho da resposta HTTP contiver o campo de atributo Cache-Control: no-cache, a compactação está habilitada;
  • no-store: Se o cabeçalho da resposta HTTP contiver o campo de atributo Cache-Control: no-store, a compactação está habilitada;
  • private: Se o cabeçalho da resposta HTTP contiver o campo de atributo Cache-Control:private, a compactação será habilitada;
  • no_last_modified: Se o cabeçalho da resposta HTTP não contiver o campo de atributo Last-Modified, a compactação será habilitada;
  • no_etag: Se o cabeçalho da resposta HTTP não contém o campo de atributo ETag, a compactação é habilitada;
  • auth: Se o cabeçalho da resposta HTTP contiver o campo de atributo Autorização, a compactação será habilitada;
  • qualquer: habilita a compactação para todos os dados de resposta.

Quando o navegador do cliente não suporta compactação gzip, você pode usar o módulo ngx_http_gunzip_module para descompactar os dados compactados e enviá-los ao cliente. Os navegadores que suportam compactação gzip não são processados. 

gzip_static always;                  # 始终发送静态的gzip压缩数据
gunzip on;                           # 若客户端浏览器不支持gzip压缩数据,则解压后发送
gunzip_buffers 16 8k;                                         # 解压缓冲区大小为128KB
gzip_proxied expired no-cache no-store private auth;    # 当被代理的服务器符合条件时,
                                                        # 对响应数据启用gzip压缩

gzip on;                             # 启用动态gzip压缩功能
gzip_min_length  1k;                 # 响应数据超过1KB时启用gzip压缩
gzip_buffers     4 16k;              # 动态压缩的缓冲区大小是64KB
gzip_comp_level 3;                   # 压缩级别为3
gzip_types       text/plain application/x-javascript
                text/css application/xml text/javascript
                application/x-httpd-php image/jpeg
                image/gif image/png; # 对指定的MIME类型数据启用动态压缩
gzip_vary on;                        # 向前端代理或缓存服务器发送添加"Vary: Accept-
                                     # Encoding"的响应数据

Não é recomendado habilitar o cenário gzip no Nginx

Embora a função de compactação Gzip do Nginx seja fácil de usar, não é recomendado habilitar esta função de compactação para os dois tipos de recursos de arquivo a seguir.

  • 1) Motivo dos recursos do tipo de imagem (e arquivos de vídeo) : As próprias imagens, como os arquivos jpg e png, são compactadas, portanto, mesmo depois que o gzip é ativado, não há muita diferença entre o tamanho antes e depois da compactação.
  • 2) Recursos de arquivos grandes Motivo: consumirá muitos recursos da CPU e pode não ter efeitos óbvios.

Acho que você gosta

Origin blog.csdn.net/m0_62436868/article/details/133126602
Recomendado
Clasificación