F5 Big-ip实现http压缩


转载时请务必以超链接形式标明文章 原始出处和作者信息及本版权声明
链接:http://www.dbasky.net/archives/2009/03/f5-big-iphttp.html
功能的作用:

 通过压缩Http服务器的回应内容而提高Web用户访问速度, 降低服务器回应的网络流量。

实现原理:

  HTTP 压缩是一个web browsers 和 web servers常用的技术.

用户的 browser 在"Accept-Encoding:" header中通知server采用那种压缩模式.

Server就可以在可协商的范围内选择其中一种方式并压缩回应的包.

Server另外插入一个"Content-Encoding:" header 显示采用的压缩方式.

用户访问采用压缩技术的VIP发出的请求包:

查看图片


VIP采用压缩技术回应用户返回包:

查看图片


对比观察直接访问服务器, 而没有压缩的过程:

用户直接访问没有压缩处理的服务器的请求包:

查看图片


服务器没有压缩的返回包

查看图片


实际结果:

采用Sniffer抓包分析的对比结果:

1. 直接访问服务器和访问VIP with Http Compress Profile对比

查看图片


2.  <!--[endif]-->直接访问服务器和通过Wildcard VS with Http Compress Profile路由访问的对比

查看图片


对比分析可以得出结论: 2.txt的文件在压缩和不压缩的情况下网络流量的节约是(403607-80658)/403607 = 80.0157% .

查看图片

打开每个包的内容对比可以观测到的是压缩后的网络传送内容为乱码, 而非压缩的内容是可读的标准内容; 另外在返回时间上也有一个特别的注意: 压缩后的包返回时间比不压缩 的时间反而慢, 最主要是因为压缩后的传送本来就有压缩的过程需要耗费一些时间, 关于这个问题在下面的优化中会有进一步讨论.


环境:

查看图片


在进行配置之前要先配置好VIP 并且应用http compress profile

192.168.150.223的位置上: 直接访问不作压缩处理的服务器抓包分析

然后在211.155.162.35的位置上:

访问VIP 211.155.162.39, 压缩并负载均衡到服务器

访问192.168.150.104 通过bigip上的192.168.0.0:80的Wild Card VS 压缩并路由到服务器。


压缩配置微调 

<!--[if !supportLists]--><!--[endif]-->针对压缩处理的微调

<!--[if !supportLists]--> <!--[endif]-->Minimum Content-Length for Compression -  参数调节服务器回应内容的最小压缩长度限制(in bytes) .

<!--[if !supportLists]-->Gzip Memory Level - 规定每个压缩回应时用来处理压缩的内存数量, 数值小的时候就会慢, 并且压缩比例也就小, 数值大会快并且压缩比也大些.

<!--[if !supportLists]-->gzip Window Size - 规定在服务器压缩回应时针对windows size (the compression history buffer)的内存大小(in bytes). 更大的数值会提高更大的压缩比, 但也会消耗更大的内存

<!--[if !supportLists]--><!--[endif]-->   Observed TCP Latency - 压缩的处理在宽带用户, 传输带宽足够快的情况下并不会提高用户访问速度, 就像前面显示的情况, 在试验室环境内因为用户和bigip直接连接在一起, 压缩反而会造成访问的回应时间延迟的情况. 压缩技术使用的关键就是如何确认压缩对用户是更有效的, 如何区分用户是否需要压缩处理. 为了解决这个问题, F5 开发了一个关于自动探测用户连接的延迟状况, 并用来定位更适合压缩的目标用户的专利技术. 不需要任何的探测技术, bigip观察用户连接的 TCP RTT来动态计算用户连接的延迟状况. 这让BIG-IP的压缩技术为用户提供最大的实际效果

<!--[if !supportLists]-->  压缩可选内容 - 在用户访问的Http Header中的URI可以判断用户访问的文件内容的类型, 从而判断是否要压缩处理,例如: ".*\.txt", ".*\.htm" ,".*\.html". ;  或从服务器回应的Http Header中的Content Types也可以判断回应的文件类型, 从而确认是否要采用压缩处理, 例如: "application/pdf" ,"image/.*", "text/.*", "text/(?!css$)"

<!--[if !supportLists]-->压缩效果比较好的:

<!--[if !supportLists]--><!--[endif]-->text

<!--[if !supportLists]-->html

<!--[if !supportLists]-->u  <!--[endif]-->other white space rich data

<!--[if !supportLists]-->n  <!--[endif]-->压缩效果比较不好的:

<!--[if !supportLists]-->Images(注意, 图片一般都会出现Cache的现象)

<!--[if !supportLists]-->PDFs 

<!--[if !supportLists]-->Other file types that are already compressed

  先生成一个http compress profile , 告诉bigip如果在这个profile的流量内要进行http 压缩处理:

查看图片查看图片


然后生成VS, 采用刚才添加的profile作为处理http流量的profile就可以了.

查看图片

发表评论

Close