什么是Gzip压缩
Gzip最早由Jean-loup Gailly和Mark Adler创建,用于UNIX系统的文件压缩。我们在Linux中经常会用到后缀为.gz的文件,它们就是Gzip格式的。
现今已经成为Internet 上使用非常普遍的一种数据压缩格式,或者说一种文件格式。HTTP协议上的GZIP编码是一种用来改进WEB应用程序性能的技术。大流量的WEB站点常常使用GZIP压缩技术来让用户感受更快的速度。
这一般是指WWW服务器中安装的一个功能,当有人来访问这个服务器中的网站时,服务器中的这个功能就将网页内容压缩后传输到来访的电脑浏览器中显示出来.一般对纯文本内容可压缩到原大小的40%,有时压缩比率高到80%.这样传输就快了,效果就是你点击网址后会很快的显示出来.当然这也会增加服务器的负载. 一般服务器中都安装有这个功能模块的。
现代的浏览器IE6和Firefox都支持客户端Gzip,也就是说,在服务器上的网页,传输之前,先使用Gzip压缩再传输给客户端,客户端接收之后由浏览器解压显示,这样虽然稍微占用了一些服务器和客户端的CPU,但是换来的是更高的带宽利用率。对于纯文本来讲,压缩率是相当可观的。如果每个用户节约50%的带宽,那么你租用来的那点带宽就可以服务多一倍的客户了。
当前主流网站都已启用了Gzip压缩,如Google、baidu等,可以使用微软提供的Fiddler2工具来检测是否启用了Gzip压缩。
IIS6如何启用Gzip压缩
1)打开IIS管理器,在“网站”上面右键—属性(不是具体的某个站点,而是整个网站),点击“服务”选项卡,按下图配置,点击【应用】【确定】图解:
2)点击IIS管理器中的“Web服务扩展”,右键点击“添加一个新的 Web 服务扩展”,新建一个服务扩展。扩展名可以随便取,点击添加,选择文件“c:\\windows\\system32\\inetsrv\\gzip.dll”,勾选下面的“设置扩展状态为允许”选项,点击【确定】图解:
3)打开系统的控制面板 管理工具 服务,查找服务名称为“IIS Admin Service”(IIS服务)的服务,点击停止,停止该服务。
4)打开路径“C:\\Windows\\System32\\inetsrv”下MetaBase.xml文件(请先备份),查找关键字(
各加红参数解释: a)设置压缩比率,取值范围在 1(最低) 到 9(最高)之间,不建议设置太高,虽然有很高的压缩率,但是占用更多的CPU资源。 b)设置需要压缩的静态文件的后缀名。 c)设置需要压缩的动态文件的后缀名。 5)打开系统的控制面板 管理工具 服务,查找服务名称为“IIS Admin Service”(IIS服务)的服务,点击启动,启动该服务。 6)点击IIS管理器,右键 –> 所有任务 重新启动 IIS 。 IIS7中启用Gzip压缩 1)在IIS7中配置Gzip压缩相比IIS6来说实在容易了许多,而且默认情况下就是启用GZip压缩的。如果没有,则可以再功能视图下找到“压缩”项,进入之后就会看到“静态内容压缩”和“动态内容压缩”两个选项,勾上即可。 2)配置启用压缩的文件类型及其他选项 当开启 GZip压缩之后,IIS并不是对所有内容都启用了压缩,而是有选择的进行压缩。遗憾的是,我们无法直接在IIS7管理器中配置这些压缩选项。我们首先需要在C:/Windows/System32/inetsrv/config文件夹下找到applicationhost.config文件,打开之后查找关键字( 我们注意到,对于JS来说,上面对不同的mime类型配置了不同的压缩方式。JS有三种常见的Mime类型,text/javascript,application/x-javascript,application/javascript。这三种类型都是合法的,在现代浏览器中也不存在什么差别。 但是由于IIS7中Js文件的mime类型默认被设置为application/x-javascript,也就是说对于js文件,使用的是动态内容压缩而不是静态内容压缩,因此会导致js文件有时经过压缩的,有时却没有压缩。 由于js文件通常稳定之后不会再被修改了,因此建议改成静态压缩——即把 dynamicTypes这一节中的application/x-javascript挪到静态压缩节中。这样保证每次脚本都是被压缩过返回的。 3)静态压缩及动态压缩的区别 IIS7中的HTTP压缩分为“静态内容压缩”和“动态内容压缩”,其实这两个名字第一次接触很费解。什么是动态内容什么又是静态内容?实际上,准确的翻译应该是“静态压缩”和“动态压缩”。 这两个词反应了IIS的压缩行为。对于配置在 staticTypes节中的mime类型,将会启用静态压缩,也就是说,当文件第一次被请求的时候,IIS会将其压缩,然后放入临时文件夹中,下次再有人请求此文件时直接从临时文件夹中取出压缩后的版本而不用重新执行压缩的过程。 配置在dynamicTypes一节中的mime类型的http请求都将启用动态压缩,即每一次请求,主机都会对请求的内容——可能是存放在文件系统中的静态文件,也可能是ISAPI返回的内容——进行压缩,而不会对其进行缓存。这个压缩比率因主机性能不同而会有所调整,所以我们在请求js文件的时候才会发现js文件有时压缩有时不压缩的情况。 显而易见,静态压缩会占用一定的存储空间,但是速度快,而动态压缩不占用存储空间,但是占用CPU时间,而且压缩比不恒定。而对于经过ISAPI的请求,则不能使用静态压缩方式。例如对于WCF返回的内容。 压缩前后对比 我们使用Fiddler进行监控,对比压缩前后的大小变化: 1)aspx页面压缩前后 2)css文件压缩前后 3)Js文件压缩前后下载本文