php 解析http协议,HTTP协议分析系列(九)------http协议与内容压缩

观察我们打开163的一篇新闻,看到如下相应头信息,看到如下响应头信息,注意,Content-Length

20150105130940_4725.jpg

同时,我们点击右键保存源码,保存的文件大小

20150105130943_1757.jpg

思考:Content-Length在之前的学习中,代表返回的主体长度

但此处为什么返回的主体长度和content-length不一致呢?

原因在于Content-Encoding:gzip这个响应头信息在作用

原理:为了提高网页在网络上的传输速度,服务器对主体信息进行压缩。如常见的gzip压缩,deflate压缩,compress压缩,以及google chrome正在推的sdch压缩。

压缩的过程是这样:

20150105130943_4726.jpg

刚才那个情况的原因,服务器对页面进行了压缩content-length是“压缩”后的长度

如何在apache启用压缩功能?

1.开启deflate模块,或gzip模块。

20150105130943_8945.jpg

2.在conf文件中写如下代码

20150105130944_2226.jpg

3.为什么要指定文件类型来压缩?

答:压缩也是要耗CPU资源的,图片/电影/视频等文件,压缩效果也不好。

一般是压缩文本格式的文件。

DeflateCompressionLevel 6

AddOutputFilterByType DEFLATE text/plain

AddOutputFilterByType DEFLATE text/html

AddOutputFilterByType DEFLATE text/xml

AddOutputFilterByType DEFLATE text/css

AddOutputFilterByType DEFLATE text/javascript

AddOutputFilterByType DEFLATE application/xhtml+xml

AddOutputFilterByType DEFLATE application/xml

AddOutputFilterByType DEFLATE application/rss+xml

AddOutputFilterByType DEFLATE application/atom_xml

AddOutputFilterByType DEFLATE application/x-javascript

AddOutputFilterByType DEFLATE application/x-httpd-php

AddOutputFilterByType DEFLATE image/svg+xml

20150105130944_5976.jpg

问:服务器怎么知道我们的浏览器支持gzip的?

答:客户端允许发一个accept-Encoding头信息,与服务器协商

20150105130945_9258.jpg

这个例子可以看出chrome浏览器这三种类型

20150105130946_4414.jpg

火狐只支持两种压缩方式

小技巧:当我们在采集时,可以不发送Accept-Encoding信息,这样采集到的直接是源码,当然也可以采集gzip(提高速度),再用gzip解压内容。

以上就介绍了HTTP协议分析系列(九)------http协议与内容压缩,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值