¿Por qué es beneficiosa la minificación HTML / Javascript?

14

¿Por qué es beneficiosa la minificación HTML / Javascript cuando el protocolo HTTP ya admite la compresión de datos gzip?

Me doy cuenta de que la minificación de Javascript / HTML tiene el potencial de reducir significativamente el tamaño de los archivos Javascript / HTML al eliminar espacios en blanco innecesarios, y tal vez cambiar el nombre de las variables a unas pocas letras cada una, pero el algoritmo LZW no funciona especialmente bien cuando hay muchas repeticiones caracteres (por ejemplo, muchos espacios en blanco?)

Me doy cuenta de que algunas herramientas de minificación de Javascript hacen más que solo reducir el tamaño. El compilador de cierre de Google, por ejemplo, también trata de mejorar el rendimiento del código al incorporar funciones y hacer otros análisis. Pero el objetivo principal de la minificación de Javascript suele ser reducir el tamaño del archivo.

También me doy cuenta de que hay otras razones por las que es posible que desee minimizar además del rendimiento, como la ofuscación de código. Pero, de nuevo, esa razón generalmente no se enfatiza tanto como la ganancia de rendimiento y la reducción del tamaño del archivo. Por ejemplo, Closure Compiler no se anuncia como una herramienta de ofuscación, sino como un reductor de tamaño de código y un potenciador de la velocidad de descarga.

Entonces, ¿cuánto rendimiento obtiene realmente de la minificación de Javascript / HTML cuando ya está reduciendo significativamente el tamaño del archivo con la compresión gzip?

Canal72
fuente

Respuestas:

11

Porque la compresión gzip tiene su propia sobrecarga (CPU). La minificación es la primera compresión "baja" que se puede aplicar sin el golpe de la CPU.

Esto puede parecer insignificante, sin embargo, los números pronto tienen sentido cuando se trata de una escala.

Además, con la minificación, tienes menos para gzip.

Noche oscura
fuente
3
¿Los servidores web modernos realmente comprimirán los archivos javascript para cada solicitud? Parece probable que un servidor guarde en caché el contenido comprimido estático, ya que es poco probable que cambie.
aaberg
@aaberg Aun así, son más datos en caché en el servidor. (no es que el almacenamiento en caché no sea bueno)
escalofríos42
@ chilis42: los servidores pueden servir archivos precomprimidos desde el propio sistema de archivos, si ese es el problema.
herby
+1 para escala. Si tienes 10 usuarios y 100 visitas al día, es irrelevante. Si necesita un servidor de 100k visitas por hora, es un ahorro sustancial.
SoylentGray
2
Algo me dice que ejecutar un compilador JavaScript a gran escala y varias ejecuciones de optimización en representación interna, todo esto implementado a menudo en Java no es una baja sobrecarga de la CPU .
Oleg V. Volkov
5

La minificación + gzip generalmente da mejores resultados, porque gzip es un algoritmo general, no adaptado específicamente a una entrada u otra, mientras que el minificador conoce su contenido y puede hacer el trabajo que el algoritmo de compresión general no puede. También puede permitirse el lujo de perder (piense: elimine por completo los comentarios y espacios en blanco; eso es 100% de compresión para estos datos, ¿cómo puede vencerlos?), Mientras que la compresión general no puede.

Oleg V. Volkov
fuente
2

Es posible que no obtenga demasiados beneficios de rendimiento, pero aún así reducirá su uso de ancho de banda. Si puede eliminar unos pocos kb de sus archivos js (y css) mediante la minificación (y el uso de sprites css para reducir el número de solicitudes) y atiende a miles de usuarios por día, después de un mes reducirá significativamente su ancho de banda.

Steve Whitehouse
fuente
1
+1: la minificación se trata de ahorros globales Puede ayudar a que una solicitud individual sea más rápida, pero el objetivo es disminuir el uso de ancho de banda con el tiempo.
Joel Etherton
1

Lo más costoso que haces en una aplicación web es enviar cosas por el cable. Enviar menos cosas por el cable es casi siempre una ganancia neta si paga en ciclos de CPU.

Además, no tengo nada científico para respaldar esto, pero esperaría que las herramientas de minificación probablemente puedan comprimir javascript mejor que gzip si por ninguna otra razón que las herramientas de minificación son específicas del dominio y se pueden ajustar para comprimir mejor javascript mientras que gzip es una herramienta genérica y se comprometerá en el medio.

Wyatt Barnett
fuente