作为一个程序员,F12查看网页是我们每一天都要做的事情,细心的码农们应该会发现一个问题或者了解这个事情,
那就是:页面源码文件的大小和响应头信息中的Content-Length不一致?
Content-length:代表返回主题长度。为什么不一致?
是由于:相应头信息中的Content-Encoding:gzip的作用。
原理:为了提高网页在网络上的运输速度,服务器对主体信息进行压缩(gzip压缩,deflate压缩,compress压缩,以及Google的sdch压缩)
返回压缩内容之后,客户端接受到压缩文件之后进行解压,再渲染页面。所以Content-Length是压缩后的大小。
如何在 Apache启用压缩功能:
1:开启:deflate模块或者gzip模块。在httpd.conf文件中,找到gzip或者deflate等把前面的#去掉
2:在conf文件中,写代码:
<ifmodule mod deflate.c>
DeflateCompressionLevel 6 #压缩级别为6,可选1-9 推荐6
AddOutputFileterByTypeDEFLATE text/plain #压缩文本文件
AddOutputFileterByTypeDEFLATE texthtml #压缩html文件
AddOutputFileterByTypeDEFLATE text/xml #压缩xml文件
。。。
</ifmodule>
为什么要指定文件类型来压缩?
因为压缩也是要消耗CPU资源的,而图片、视频等文件,压缩效果不好。所以一般压缩文本格式文件。
说了这么多,你会提出疑问,服务器怎么会知道我们的浏览器支持gzip或者其他的压缩格式呢?
->在请求头信息中的Accept-Encoding 于服务器写上:gzip,deflate,sdch等压缩方式。