1. 什么是内容压缩
我们打开网易的一篇新闻,会看到如下响应头信息:
然后,我们点击右键保存其源码,得到文本文件大小如下:
问题:Content-Length代表返回的主体长度,但此处为什么返回的主体长度和实际源码大小不一致呢?
原因:原因在于Content-Encoding:gzip
这个响应头信息。
原理:为了提高网页在网络上的传输速度,服务器会对主体信息进行压缩,如常见的gzip压缩,deflate压缩,compress压缩,以及Google chrome推行的sdch压缩。
压缩过程:
所以content-length返回的主体长度是服务器端压缩后的长度。
2. 如何在服务器启用压缩功能
-
开启deflate模块或gzip模块
-
在conf文件中写如下代码:
为什么要指定文件类型压缩?因为压缩也是要消耗CPU资源的,图片/视频等文件压缩效果不好。一般压缩文本格式的文件,
问题:服务器怎么知道浏览器支持gzip的?
答:客户端会发送一个Accept-Encoding头信息,与服务器协商,如下图:
上图可以看出chrome浏览器可以支持gzip,deflate,sdch压缩。
参考视频:https://www.bilibili.com/video/BV1js411g7Fw?p=8