定义:
HTTP定义了一些标准的内容编码类型,我们说HTTP压缩,其实就是HTTP内容编码的一种。
流程
- 用户在request的header设置支持的类型,Accept-Encoding: gzip, deflate。 (告诉服务器, 浏览器支持gzip压缩)
- 服务器拿到请求后,生成 reponse(含有原来的ContentType和Content-Length)
- 服务端通过预设的配置,如nginx gzip on,使用gzip压缩reponse,并调整ContentType和Content-Length信息,把压缩后的reponse 加上Content-Encoding:gzip 返回客户端
- 浏览器 根据Content-Encoding:gzip 解压,还原出原来的reponse,显示出网页内容。
种类
- gzip 表明实体采用GNU zip编码
- compress 表明实体采用Unix的文件压缩程序
- deflate 表明实体是用zlib的格式压缩的
- identity 表明没有对实体进行编码。当没有Content-Encoding header时, 就默认为这种情况
- br 表明没有对实体进行编码。当没有Content-Encoding header时, 就默认为这种情况
gzip, compress, 以及deflate编码都是无损压缩算法,用于减少传输报文的大小,不会导致信息损失。 其中gzip通常效率最高, 使用最为广泛。
br:
Brotli 通过变种的 LZ77 算法、Huffman 编码以及二阶文本建模等方式进行数据压缩,与其他压缩算法相比,它有着更高的压塑压缩效率。启用 Brotli 压缩算法,对比 Gzip 压缩 CDN 流量再减少 20%。
需要https 支持