Interpretación del módulo gzip de Nginx

Tabla de contenido

Introducción básica a gzip

¿Cómo funciona gzip?

gzip en Nginx

No se recomienda habilitar el escenario gzip en Nginx


Introducción básica a gzip

gzip es la abreviatura de GNUzip, que se utilizó por primera vez para la compresión de archivos en sistemas UNIX. La codificación Gzip sobre el protocolo HTTP es una tecnología utilizada para mejorar el rendimiento de las aplicaciones web. Tanto el servidor web como el cliente (navegador) deben admitir gzip . Actualmente, los principales navegadores como Chrome, Firefox, IE, etc. admiten este protocolo. Los servidores comunes como Apache, Nginx e IIS también admiten gzip.

¿Cómo funciona gzip?

 

  • 1) El navegador solicita la URL y establece el atributo aceptar codificación: gzip en el encabezado de la solicitud. Indica que el navegador admite gzip.
  • 2) Después de recibir la solicitud enviada por el navegador, el servidor determina si el navegador admite gzip. Si es compatible, enviará contenido comprimido al navegador. Si no lo admite, enviará contenido sin comprimir al navegador. Generalmente, tanto los navegadores como los servidores admiten gzip y los encabezados de respuesta devueltos contienen codificación de contenido:gzip.
  • 3) Después de recibir la respuesta del servidor, el navegador determina si el contenido está comprimido, si está comprimido, lo descomprime y muestra el contenido de la página.

gzip en Nginx

Para mejorar la velocidad a la que los usuarios obtienen datos de respuesta, el servidor Nginx puede comprimir con gzip los datos de respuesta y reducir el tamaño de los datos de respuesta antes de enviarlos al navegador del cliente. En comparación con permitir a los usuarios navegar por páginas web, el método anterior se muestra más rápido.

Para habilitar la función de compresión gzip de datos de respuesta (módulo ngx_http_gzip_module), el navegador del usuario también debe admitir la función de descompresión gzip

instrucción Alcance valor por defecto Opciones de valor de comando Descripción de la instrucción
zip http、servidor、ubicación、si está en la ubicación apagado Encendido o apagado Habilitar la función gzip
gzip_buffers http, servidor, ubicación 32 4k o 16 8k -- Establecer el búfer de compresión gzip
gzip_comp_level http, servidor, ubicación 1 -- Establezca el nivel de compresión de gzip, el rango de valores es de 1 a 9. Cuanto mayor sea el valor de este comando, mayor será el grado de compresión.
gzip_disable http, servidor, ubicación -- -- Desactive la compresión gzip cuando el contenido del campo de atributo User-Agent en el encabezado de la solicitud coincida con el valor del comando.
gzip_http_versión http, servidor, ubicación 1.1 1.0 o 1.1 Establece la versión más antigua del protocolo HTTP para solicitudes comprimidas
gzip_min_length http, servidor, ubicación 20 -- Establezca la longitud mínima de los datos de respuesta con la compresión gzip habilitada, según el valor de Content-Length en el encabezado de respuesta. Si Content-Length no existe, la directiva no es válida; si el valor de la directiva es 0, significa toda la compresión
gzip_proxied http, servidor, ubicación apagado apagado o caducado o sin caché o sin almacenamiento o privado o no_last_modified o no_etag o auth o cualquier Determine si se habilita la compresión gzip según el campo de atributo del encabezado de respuesta de los datos de respuesta devueltos por el servidor proxy
tipos_gzip http, servidor, ubicación texto/html -- Establezca el tipo MIME de datos de respuesta que se pueden comprimir con gzip. Cuando el valor del comando es *, significa todos los tipos MIME.
gzip_vary http, servidor, ubicación apagado Encendido o apagado Agregue Vary:Accept-Encoding en el encabezado de respuesta y devuélvalo al proxy de front-end o al servidor CDN para determinar si se debe enviar una copia en caché gzip al cliente para evitar que el proxy o el servidor CDN responda a una copia en caché que no Tiene compresión gzip. Navegador con capacidades de descompresión.

Las opciones de valor de comando de la directiva gzip_proxied se describen a continuación:

  • apagado: apaga la función de comando;
  • caducado: si el encabezado de respuesta HTTP contiene el campo de atributo Caduca, la compresión está habilitada;
  • no-cache: si el encabezado de respuesta HTTP contiene el campo de atributo Cache-Control: no-cache, la compresión está habilitada;
  • no-store: si el encabezado de respuesta HTTP contiene el campo de atributo Cache-Control: no-store, la compresión está habilitada;
  • privado: si el encabezado de respuesta HTTP contiene el campo de atributo Cache-Control:privado, la compresión está habilitada;
  • no_last_modified: si el encabezado de respuesta HTTP no contiene el campo de atributo Última modificación, la compresión está habilitada;
  • no_etag: si el encabezado de respuesta HTTP no contiene el campo de atributo ETag, la compresión está habilitada;
  • autenticación: si el encabezado de respuesta HTTP contiene el campo de atributo Autorización, la compresión está habilitada;
  • cualquiera: habilita la compresión de todos los datos de respuesta.

Cuando el navegador del cliente no admite la compresión gzip, puede utilizar el módulo ngx_http_gunzip_module para descomprimir los datos comprimidos y enviarlos al cliente. Los navegadores que admiten la compresión gzip no se procesan. 

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"的响应数据

No se recomienda habilitar el escenario gzip en Nginx

Aunque la función de compresión Gzip de Nginx es fácil de usar, no se recomienda habilitar esta función de compresión para los siguientes dos tipos de recursos de archivos.

  • 1) Motivo de los recursos de tipo de imagen (y archivos de video) : las imágenes como los archivos jpg y png se comprimen, por lo que incluso después de activar gzip, no hay mucha diferencia entre el tamaño antes y después de la compresión.
  • 2) Recursos de archivos grandes Motivo: consumirá muchos recursos de CPU y es posible que no tenga efectos obvios.

Supongo que te gusta

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