stringtranslate.com

Brótli

Brotli es un algoritmo de compresión de datos sin pérdida desarrollado por Google . Utiliza una combinación del algoritmo de compresión sin pérdida LZ77 de propósito general , codificación Huffman y modelado de contexto de segundo orden . Brotli es utilizado principalmente por servidores web y redes de distribución de contenido para comprimir contenido HTTP , lo que hace que los sitios web de Internet se carguen más rápido. Es un sucesor de gzip , es compatible con todos los navegadores web principales y se ha vuelto cada vez más popular, ya que proporciona una mejor compresión que gzip. [ cita requerida ]

Historia

Los empleados de Google Jyrki Alakuijala y Zoltán Szabadka desarrollaron inicialmente Brotli en 2013 para reducir el tamaño de las transmisiones de la fuente web WOFF . [2] Alakuijala y Szabadka completaron la especificación Brotli durante 2013-2016. La especificación fue acompañada con una implementación de referencia desarrollada por dos autores adicionales, Evgenii Kliuchnikov y Lode Vandevenne, quienes previamente habían desarrollado la implementación zopfli de Google de compresión compatible con deflate y gzip en 2013. [3] : 1  A diferencia de zopfli, que era una reimplementación de una especificación de formato de datos existente, Brotli era un nuevo formato de datos y permitió a los autores mejorar aún más las tasas de compresión. [4]

La especificación Brotli se generalizó en septiembre de 2015 para la compresión de flujos HTTP (tipo de codificación de contenido "br"). Esta iteración generalizada también mejoró la tasa de compresión al utilizar un diccionario predefinido de palabras y frases de uso frecuente. La versión de Brotli lanzada en septiembre de 2015 por los ingenieros de software de Google contenía mejoras en la compresión de datos sin pérdida genérica , con especial énfasis en el uso para la compresión HTTP . El codificador se reescribió parcialmente, con el resultado de que la tasa de compresión mejoró, tanto el codificador como el decodificador se aceleraron, se mejoró la API de transmisión y se agregaron más niveles de calidad de compresión. Además, la nueva versión muestra mejoras de rendimiento en todas las plataformas, con una reducción de la memoria de decodificación. [4]

El Grupo de Trabajo de Ingeniería de Internet aprobó la especificación del formato de datos comprimidos Brotli como una solicitud informativa de comentarios ( RFC  7932) en julio de 2016. [5] El formato de datos Brotli es una parte integral de la segunda iteración del Web Open Font Format , [5] : 3  que fue reconocido en un Premio Emmy de Tecnología e Ingeniería 2021 de la Academia Nacional de Artes y Ciencias de la Televisión por la estandarización de la tecnología de fuentes en W3C. [6] [7]

A lo largo de los años, se ha ido añadiendo compatibilidad con Brotli a los navegadores web, y el 96 % de los usuarios de todo el mundo utilizan un navegador compatible con el formato, a julio de 2022. [8]

En 2016, Dropbox volvió a implementar Brotli en Rust para cumplir con su requisito de ser más seguro contra un cliente malicioso. [9] [10]

Algoritmo

El nuevo formato de archivo de Brotli permite a sus autores mejorar Deflate mediante varias mejoras algorítmicas y a nivel de formato: el uso de modelos de contexto para literales y distancias de copia, la descripción de distancias de copia a través de distancias pasadas, el uso de una cola de movimiento al frente en la selección de código de entropía, la codificación de entropía conjunta de longitudes de literales y copias, el uso de algoritmos gráficos en la división de bloques y una ventana de referencia hacia atrás más grande son ejemplos de mejoras.

A diferencia de la mayoría de los algoritmos de compresión de propósito general, Brotli utiliza un diccionario predefinido, de aproximadamente 120 KiB de tamaño, además del diccionario de relleno dinámico ("ventana deslizante"). El diccionario predefinido contiene más de 13000 palabras comunes, frases y otras subcadenas derivadas de un gran corpus de texto y documentos HTML. [11] [3] Se ha demostrado que el uso de un diccionario predefinido aumenta la compresión cuando un archivo contiene principalmente palabras de uso común. [12] La ventana deslizante de Brotli está limitada a 16  MiB . Esto permite la decodificación en teléfonos móviles con recursos limitados, pero hace que Brotli tenga un rendimiento inferior en los puntos de referencia de compresión que tienen archivos más grandes. Las limitaciones del tamaño pequeño de la ventana se pueden aliviar utilizando Large Window Brotli , que no es compatible con RFC7932 (Brotli propiamente dicho). [13]

Nombre

Mientras que la implementación zopfli de Google del algoritmo de compresión deflate recibe su nombre de Zöpfli, la palabra suizo-alemana para un pan trenzado con mantequilla del tamaño de un bocadillo , brotli recibe su nombre de Brötli, la palabra suizo-alemana para un panecillo . [4] La propia implementación de Google de la especificación Brotli se publicó bajo los términos de la licencia permisiva de software libre MIT en 2016. Una validación formal de la especificación Brotli fue implementada de forma independiente por Mark Adler , [5] : 126  uno de los coautores del formato y la biblioteca de compresión zlib / gzip . La implementación de Adler se publicó bajo los términos de la licencia Apache igualmente permisiva . [14] También existen otras implementaciones de la especificación, incluida una en el lenguaje Haxe de fuente a fuente .

Aplicaciones

La compresión Brotli se utiliza generalmente como una alternativa a gzip en la web, ya que Brotli proporciona una mejor compresión general. [15] En comparación con la compresión gzip, los archivos JavaScript comprimidos con Brotli son aproximadamente un 15 % más pequeños, los archivos HTML son alrededor de un 20 % más pequeños y los archivos CSS son alrededor de un 16 % más pequeños. [16]

La implementación de referencia incluye un programa de línea de comandos brotlisimilar a gzip, [17] pero su uso en el mundo de tipo Unix como un simple compresor es escaso. Los desarrolladores de Libarchive encuentran difícil admitir el formato de flujo de .brarchivos sin procesar, ya que no existe un número mágico que indique el formato de archivo. [18]

Apoyo de la industria

Navegadores y otros clientes

Servidores web

Referencias

  1. ^ "Versión 1.1.0". 31 de agosto de 2023. Consultado el 18 de septiembre de 2023 .
  2. ^ Sheeter, Rod (18 de febrero de 2015), "Fuentes más pequeñas con WOFF 2.0 y rango Unicode", Blog de código abierto de Google , Mountain View, CA: opensource.googleblog.com.
  3. ^ ab Alakuijala, Jyrki; Kliuchnikov, Evgenii; Szabadka, Zoltan; Vandevenne, Lode (22 de septiembre de 2015), "Comparación de los algoritmos de compresión Brotli, Deflate, Zopfli, LZMA, LZHAM y Bzip2" (PDF) , The Comprehensive R Archive Network , r-project.org.
  4. ^ abc Szabadka, Zoltan (22 de septiembre de 2015), "Presentamos Brotli: un nuevo algoritmo de compresión para Internet", Blog de código abierto de Google , Mountain View, CA: opensource.googleblog.com.
  5. ^ abc Alakuijala, Jyrki; Szabadka, Zoltan (2016), RFC 7932: Formato de datos comprimidos Brotli , Solicitud de comentarios del Grupo de trabajo de ingeniería de Internet, Fremont, CA: IETF Trust.
  6. ^ "El W3C recibe un premio Emmy por estandarizar la tecnología de fuentes". 2022-06-01.
  7. ^ "Cambiando la cara de la web: el grupo de trabajo de fuentes web del W3C y MPEG reciben un premio Emmy de tecnología e ingeniería". 2022-06-01.
  8. ^ "¿Puedo usar...? - Brotli". 28 de junio de 2022.
  9. ^ Compresión sin pérdida con Brotli en Rust para un poco de Pied Piper en el backend, Daniel Reiter Horn y Mehant Baid, 29 de junio de 2016.
  10. ^ [1], Rishabh Jain y Daniel Reiter Horn, 4 de agosto de 2020
  11. ^ Chirgwin, Richard (23 de septiembre de 2015), "La nueva restricción de Google: la compresión de Brotli de código abierto", The Register , theregister.co.uk.
  12. ^ Larkin, Henry (2007). "Indexación de palabras para representaciones de datos de dispositivos móviles". 7.ª Conferencia internacional IEEE sobre informática y tecnología de la información (CIT 2007) . pp. 399–404. doi :10.1109/CIT.2007.22. ISBN 978-0-7695-2983-7.S2CID8707991  .​.
  13. ^ Kliuchnikov, Eugene. "¿Cómo usar tamaños de ventana grandes? · Issue #639 · google/brotli". GitHub . Actualmente estamos probando la extensión "Large Window Brotli" que permitirá ventanas de hasta 1 GiB. [...] "Large Window Brotli" ya está disponible.
  14. ^ Adler, Mark (26 de enero de 2015), "Revisión y verificación de especificaciones de Brotli", Adler brotli , San Francisco: GitHub.
  15. ^ Calvano, Paul (25 de julio de 2018). "Compresión de Brotli: ¿cuánto reducirá su contenido?" . Consultado el 7 de marzo de 2021 .
  16. ^ Pandjarov, Hristo (13 de enero de 2021). "Más ganancias en la velocidad del sitio con el algoritmo de compresión Brotli". SiteGround . Consultado el 7 de marzo de 2021 .
  17. ^ "página del manual de brotli(1)". manned.org .
  18. ^ "Soporte de Brotli · Problema n.° 1238 · libarchive/libarchive". GitHub . Sin una firma mágica, libarchive no puede reconocer automáticamente el tipo de archivo, por lo que no puede descomprimirlo automáticamente. (Libarchive no tiene en cuenta el nombre del archivo, solo el contenido).
  19. ^ Goodger, Ben; et al. (26 de enero de 2016), "Notas de la versión de Firefox 44", Mozilla Firefox , Mozilla Foundation.
  20. ^ ab Baheux, Kenji (15 de enero de 2016), "Accept-encoding: br en conexión HTTPS", Estado de la plataforma Chrome , chromestatus.com.
  21. ^ Trace, Rob (20 de diciembre de 2016), "Presentación de la compresión Brotli en Microsoft Edge", Microsoft Edge Developer , blogs.windows.com
  22. ^ Stenberg, Daniel; et al. "curl - Cambios". curl.haxx.se . Consultado el 14 de enero de 2018 .
  23. ^ "README". GitHub . 15 de octubre de 2021.
  24. ^ "Google Brotli: Cómo comprimir, abrir y extraer archivos BR".
  25. ^ "Cambios con Apache 2.4.26", repositorio Apache HTTPD , svn.apache.org.
  26. ^ "Mayor relación de compresión con compresión Brotli". 6 de octubre de 2023.
  27. ^ "Almacenamiento en caché con Azure Front Door". docs.microsoft.com . 15 de junio de 2023.
  28. ^ "El servicio Azure Front Door ya está disponible". azure.microsoft.com .
  29. ^ "Amazon CloudFront anuncia soporte para la compresión Brotli". aws.amazon.com .
  30. ^ "¿Qué comprimirá Cloudflare?". support.cloudflare.com .
  31. ^ "Información de la versión 1.4.56 de lighttpd". redmine.lighttpd.net .
Notas
 - Finley, Klint (22 de septiembre de 2015), "Hooli, quiero decir Google, ofrece un código de compresión de forma gratuita", Wired Online , wired.com  .

Enlaces externos