Estoy usando el caché de proxy inverso nginx con gzip habilitado. Sin embargo, tuve algunos problemas con las solicitudes de HTTP de las aplicaciones de Android a mi servicio web Rails JSON. Parece que cuando apago el caché de proxy inverso, funciona bien porque el encabezado de respuesta viene sin gzip. Por lo tanto, creo que el problema es causado por gzip. ¿Cuál es el nivel más apropiado de compresión gzip?
gzip on;
gzip_http_version 1.0;
gzip_vary on;
gzip_comp_level 6;
gzip_proxied any;
gzip_types text/plain text/css text/javascript application/javascript application/json application/x-javascript text/xml application/xml application/xml+rss;
Probé esto en nginx 1.3.9 con dos archivos, y estos fueron los resultados que obtuve para los distintos niveles:
text/html
- phpinfo ():application/x-javascript
- jQuery 1.8.3 (sin comprimir):No estoy seguro de cuán representativo es esto, pero debería servir de ejemplo. Además, no he tenido en cuenta el uso de la CPU, pero a partir de estos resultados, el nivel de compresión ideal parece estar entre
4
y6
.Además, si usa el
gzip_static
módulo, puede precomprimir sus archivos (en PHP):Esto le permite obtener la mejor compresión posible sin sacrificar la CPU en cada solicitud.
fuente
Si realmente puede ahorrar recursos de la CPU, puede usar 9, pero para la mayoría de los sitios un valor de 2 es suficiente, ya que gzip no reduce el archivo mucho después del nivel 1.
Editar: Miré a Amazon CloudFront y parece que está usando el nivel 6, probablemente porque ese nivel es el que ejecuta la descompresión más rápido, lo que mejora el rendimiento del procesamiento de la página.
fuente
Si tiene un sitio web de alto volumen y aún desea tener un nivel completo (9) de compresión, la mejor idea sería colocar su contenido estático en Amazon S3 o servicios de almacenamiento de objetos similares y cargar los archivos comprimidos.
Todavía querrás usar nginx para comprimir tu HTML, así que mejor mantener ese valor a la normalidad, uso 5 allí.
fuente
comp_level
en mi configuración, por lo que no puedo decir en qué nivel estoy actualmente. ¿Sabes cuáles son los valores predeterminados? ¿Fuente?