Brotli es un nuevo algoritmo de compresión desarrollado por Google. El tamaño reducido de respuesta a compresión permite un mejor uso del espacio y una carga de página más rápida. En muchos casos, Brotli supera a gzip. Ventajas: Para activos web típicos como css, html, js, Brotli supera a gzip entre un 17 y un 25%. Brotli -11 densidad comparado con gzip-9: html (corpus multilingüe): ahorrar el 25% de js (los 10k más altos de Alexa): ahorrar el 17% de los js que se reducen (top 10k de Alexa): ahorrar el 17% de CSS (top 10k de Alexa): 20% de ahorro.
Introducción al algoritmo de Brotli
Brotli se lanzó originalmente en 2015 para compresión offline de fuentes web. Los ingenieros de software de Google lanzaron una versión mejorada de Brotli en septiembre de 2015 con especial atención a la compresión HTTP. El codificador ha sido parcialmente reescrito para mejorar la relación de compresión, tanto el codificador como el decodificador se han incrementado para mayor velocidad, y la API de streaming se ha mejorado para añadir más niveles de calidad de compresión. La nueva versión también muestra mejoras de rendimiento en todas las plataformas y una reducción de la memoria necesaria para la decodificación.
A diferencia de los algoritmos de compresión generales comunes, Brotli utiliza un diccionario predefinido de 120 kilobytes. El diccionario contiene más de 13.000 palabras, frases y otras subcadenas de uso común de un gran corpus de texto y documentos HTML. Algoritmos predefinidos pueden aumentar la densidad de compresión de archivos más pequeños.
Usar Brotli en lugar de flate para comprimir archivos de texto suele aumentar la densidad de compresión en un 20%, mientras que la velocidad de compresión y descompresión es aproximadamente la misma. Se ha propuesto que el tipo de codificación de contenido para la compresión de flujos usando Brotli utilice "br".
Brotli vs. Gzip
Al evaluar algoritmos de compresión, nos centramos en dos indicadores: la tasa de compresión y la velocidad de compresión. Como puedes ver en la figura anterior, no importa cuál de los 9 niveles de compresión de gzip se use, su relación de compresión es menor que la de brotli (comparado con gzip, también puede configurarse a 10), y la velocidad de compresión también es más lenta.
Ventaja de Brotli: Brotli supera gzip entre un 17 y un 25% para activos web típicos como css, html, js. Brotli -11 densidad comparado con gzip-9: html (corpus multilingüe): ahorrar el 25% de js (los 10k más altos de Alexa): ahorrar el 17% de los js que se reducen (top 10k de Alexa): ahorrar el 17% de CSS (top 10k de Alexa): ahorro del 20%
asp.net núcleo habilita Brotli
Valor de cabecera Accept-Encoding
Configuración del código
El siguiente código demuestra cómo habilitar middleware de compresión responsivo para el tipo MIME predeterminado y los proveedores de compresión (Brotli y Gzip):
Nota:
- app. UseResponseCompression debe incluirse en la aplicación. Usa UseMvc antes de llamar.
- Utiliza herramientas como Fiddler, Firebug o Postman para configurar la cabecera de la solicitud Accept-Encoding y estudiar la cabecera, tamaño y cuerpo de la respuesta.
Por defecto, el proveedor de compresión Brotli se añade al array del proveedor de compresión junto con el proveedor de compresión Gzip. Cuando el cliente soporta el formato de datos comprimidos Brotli, la compresión se configura por defecto en compresión Brotli. Si el cliente no soporta Brotli, la compresión pasa por defecto a Gzip cuando el cliente soporta compresión Gzip.
Prueba de compresión BR
Abre la herramienta de captura de paquetes Fiddler y usa un navegador para acceder a la dirección de nuestra página web, puedes ver lo siguiente:
Cabecera de solicitud: Acept-Codificación: gzip, deflate, br
Cabecera de respuesta: Codificación de contenido: br
Cuando se realiza compresión, se elimina el encabezado Content-Length porque el contenido del cuerpo cambia cuando se comprime la respuesta.
Cuando se realiza compresión, se elimina el encabezado Content-MD5 porque el contenido del cuerpo ha cambiado y el hash ya no es válido.
Cuando asp.net núcleo activa la función https, Brotli no afectará a la compresión html y json, pero sí puede comprimir js y css. (Es posible que la longitud del carácter sea demasiado pequeña para comprimirse, y debería fijarse)
(Fin)
|