文章目录
Brotli 介绍
现代的网页通常包含了由大量的HTML, CSS和JavaScript代码编写的图片、视频或其他大型文件数据,导致了网页打开的速度很慢。如果能有一种好的压缩算法将这些内容和数据进行压缩后传输,那么用户只需要等待很短时间就可以完全加载整个页面上的内容。
Brotli 是 Google 在 2013 年底推出的一款开源通用数据压缩器,并在 Github 开源,现在已经被大多数知名浏览器和 Web 服务器采用。Brotli 的设计的主要目标是压缩 Internet 上的数据,这意味着它可以优化解码时使用的资源,同时实现最大的压缩密度。
Brotli 概述
- Brotli 的编码器库提供了 12 个质量级别(从 0 到 11)。它们是⽤压缩速度换取压缩效率的压缩模式:更⾼质量的级别速度较慢,但会产⽣更好的压缩⽐。
- 一个 Brotli 压缩⽂件由 元块(meta-blocks) 集合组成。每个元块最多可容纳 16MiB,由两部分组成:一个 数据部分(data part),它存储 LZ77 压缩的放⼊块,以及一个 标题(header),每个块的压缩遵循经典的 ①LZ77 压缩⽅案并由②计算具有良好的熵的 LZ77 解析和计算 LZ 短语的简洁编码这两个主要阶段组成。
Brotli 的优势
Brotli 的优势体现在哪里呢?可以参考下图 Brotli 与其它压缩算法在三种不同情况下的对比情况。
- 测试环境:以下结果的测试计算机搭载 Intel® Xeon® CPU E51650 v2,运行频率为 3.5 GHz,具有六个内核和六个额外的超线程上下⽂。运行 linux 3.13.0。所有编解码器均使⽤相同的编译器 GCC 4.8.4 在 O2 级别优化进行编译。
情况1:压缩Canterbury语料库的11个文件
此表显示了 Canterbury语料库上压缩算法的结果。Canterbury 语料库包含 11 个文件,我们显示了测量属性的几何平均值:压缩比、压缩速度和解压缩速度。
情况2:压缩包含 93种不同语言的 1285个HTML文档
压缩算法对从 Internet 爬网的文档样本的结果。该示例包含 1285 个 HTML 文档,其中包含 93 种不同的语言。
情况3:压缩 enwik8文件
结果
- 质量级别(quality setting)为1的 brotli的压缩速度和解压缩速度与与质量级别为1的deflate相同,但brotli的压缩比deflate提高了 12% ~ 16%。
- 质量级别为9的 brotli 与 质量级别为9的deflate也大致相同,但 enwik8的解码速度提高了28%,压缩比提高了 13% ~ 21%。
- 质量级别为11的 brotli压缩速度明显快于 zopfli,压缩比高出 20% ~ 26%。
总结
Brotli 是一款非常优秀的通用数据压缩器,并在 GitHub 上开源,接下来一段时间将继续走在啃论文的道路上,努力学习相关压缩算法。
参考
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容