前端性能优化面试题
目录

什么是 Gzip 和 Brotli 压缩?如何配置?

· 约 4 分钟读完 · 第 33 / 104 章

推荐答案

什么是 Gzip 和 Brotli 压缩?

Gzip 和 Brotli 是两种常用的压缩算法,用于在传输过程中压缩网页资源(如 HTML、CSS、JavaScript 文件),以减少文件大小,从而加快页面加载速度。

  • Gzip:是一种广泛使用的压缩算法,支持大多数浏览器和服务器。它通过减少文件大小来降低带宽消耗,通常可以将文件压缩到原始大小的 30% 左右。

  • Brotli:是一种较新的压缩算法,由 Google 开发,压缩效率比 Gzip 更高,尤其是在压缩文本文件时。Brotli 通常可以将文件压缩到原始大小的 20% 左右,但需要较新的浏览器和服务器支持。

如何配置 Gzip 和 Brotli 压缩?

1. 配置 Gzip 压缩

在 Nginx 中配置 Gzip 压缩:

在 Apache 中配置 Gzip 压缩:

2. 配置 Brotli 压缩

在 Nginx 中配置 Brotli 压缩(需要安装 Brotli 模块):

在 Apache 中配置 Brotli 压缩(需要安装 Brotli 模块):

本题详细解读

Gzip 和 Brotli 压缩的工作原理

  • Gzip:通过 LZ77 算法和 Huffman 编码来压缩数据。它首先查找重复的字符串并用较短的引用替换它们,然后使用 Huffman 编码进一步压缩数据。

  • Brotli:结合了 LZ77 算法和二阶上下文建模(2nd order context modeling),能够更高效地压缩数据,尤其是在处理文本文件时。

压缩算法的选择

  • Gzip:兼容性更好,适用于大多数场景,尤其是对旧版浏览器的支持。
  • Brotli:压缩效率更高,但需要较新的浏览器和服务器支持。通常建议在支持 Brotli 的环境中优先使用 Brotli。

压缩级别的权衡

  • Gzip 和 Brotli 都允许设置压缩级别(compression level),级别越高,压缩率越高,但 CPU 消耗也越大。通常建议在生产环境中使用中等压缩级别(如 6),以平衡压缩效率和性能。

压缩的最小文件大小

  • 对于非常小的文件(如小于 1KB),压缩可能不会显著减少文件大小,甚至可能增加文件大小。因此,通常设置一个最小文件大小阈值(如 gzip_min_length 或 brotli_min_length),避免对小文件进行压缩。

压缩的 MIME 类型

  • 通常只对文本文件(如 HTML、CSS、JavaScript)进行压缩,因为这些文件压缩效果显著。对于已经压缩的文件(如图片、视频),压缩效果有限,甚至可能增加文件大小。