来源:http://dotnet.cnblogs.com/page/46796/?EntirePage=1
本文总结了如何为使用IIS托管的网站启用Gzip压缩, 从而减少网页网络传输大小, 提高用户显示页面的速度。
本文的知识点是从互联网收集整理, 主要来源于中文wiki.。 使用YSlow检测网站启用了哪些优化时,Gzip是十分关键的一项,启动Gip压缩将立竿见影的减少页面的网络传输大小。
HTTP压缩是在Web服务器和浏览器间传输压缩文本内容的方法。HTTP压缩采用通用的压缩算法如gzip等压缩HTML、 JavaScript或CSS文件。压缩的最大好处就是降低了网络传输的数据量,从而提高客户端浏览器的访问速度。当然,同时也会增加一点点服务器的负担。Gzip是比较常见的一种HTTP压缩算法。
Web服务器处理HTTP压缩的工作原理如下:
1.Web服务器接收到浏览器的HTTP请求后,检查浏览器是否支持HTTP压缩;
在用户浏览器发送请求的HTTP头中,带有"Accept-Encoding: gzip, deflate"参数则表明支持gzip和deflate两种压缩算法。
2.如果浏览器支持HTTP压缩,Web服务器检查请求文件的后缀名;静态文件和动态文件后缀启动要所都需要在 MetaBase.xml中设置。
静态文件需要设置: HcFileExtensions Metabase Property (单击跳转到MSDN说明)
动态文件需要设置: HcScriptFileExtensions Metabase Property (单击跳转到MSDN说明)
3.如果请求文件是HTML、CSS等静态文件并且文件后缀启用了压缩,则Web服务器到压缩缓冲目录中检查是否已经存在请求文件的最新压缩文件;
4.如果请求文件的压缩文件不存在,Web服务器向浏览器返回未压缩的请求文件,并在压缩缓冲目录中存放请求文件的压缩文件;
5.如果请求文件的最新压缩文件已经存在,则直接返回请求文件的压缩文件;
6.如果请求文件是ASPX等动态文件并且文件后缀启用了压缩,Web服务器动态压缩内容并返回浏览器,压缩内容不存放到压缩缓存目录中。
IIS默认并不支持HTTP压缩,需要进行简单的配置
1.打开Internet信息服务(IIS)管理器,右击"网站"->"属性",选择"服务"。在"HTTP压缩"框中选中"压缩应用程序文件"和" 压缩静态文件",按需要设置"临时目录"和"临时目录的最大限制";
2.提醒: 经试验此步骤在本人机器上没有作用, 可以忽略.
在Internet信息服务(IIS)管理器,右击"Web服务扩展"->"增加一个新的Web服务扩展...",在"新建Web服务扩展"框中输入扩展名"HTTP Compression",添加"要求的文件"为C:/WINDOWS/system32/inetsrv/gzip.dll,其中Windows系统目录根据您的安装可能有所不同,选中"设置扩展状态为允许";
5.最后,重新启动IIS。可以到HTTP压缩测试网站验证结果.以jQuery为例, 核心类库和UI类库原始大小分别是57k和188k,压缩后分别是20k和45k:
我们通过Http头中的: Content-Encoding:gzip 属性判断返回后的数据已经启用了gzip压缩:
使用YSlow检测, 当只启动静态文件压缩时, Gzip 压缩评级为B:
当同时启动了动态文件压缩时, Gzip压缩评级为A:
1. 在修改MetaBase.xml文件时, 要停止"IIS Admin Service"服务. 否则无法保存。
2.静态压缩和动态压缩率最好设置为9。
3.上文的步骤2, 即使不添加Web服务扩展效果也是相同的。
4.压缩率设置对js文件不起作用, 压缩后大小总是相同的。
5.图片文件即使启用了gzip压缩大小也没有变化。
本文总结了如何在IIS中启用Gzip压缩。在半年前的项目中我为网站启用了Gzip, 今天整理此文主要为了整理自己的知识以便以后忘记时复习。另外经查看ChinaCache公司提供的CDN也都启用了Gzip压缩。