IIS上启用Gzip压缩(HTTP压缩) 详解_WIN2003服务器维护_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

IIS上启用Gzip压缩(HTTP压缩) 详解

作者:黑客防线网安网站维护基地 来源:黑客防线网安网站维护基地 浏览次数:0

本篇关键词:IISGzip压缩HTTP压缩
黑客防线网安网讯:一.摘要
本文总结了如何为使用IIS托管的网站启用Gzip压缩, 从而减少网页网络传输大小, 提高用户显示页面的速度.
二.前言.
本文的知识点是从互联网收集整理, 主要来源于中文wiki.  使用YSlow检测网站启用了哪 ...

一.摘要

本文总结了如何为使用IIS托管的网站启用Gzip压缩, 从而减少网页网络传输大小, 提高用户显示页面的速度.

二.前言.

本文的知识点是从互联网收集整理, 主要来源于中文wiki.  使用YSlow检测网站启用了哪些优化时, Gzip是十分关键的一项. 启动Gip压缩将立竿见影的减少页面的网络传输大小.

三.HTTP压缩概述

HTTP压缩是在Web服务器和浏览器间传输压缩文本内容的方法HTTP压缩采用通用的压缩算法如gzip等压缩HTMLJavaScriptCSS文件压缩的最大好处就是降低了网络传输的数据量从而提高客户端浏览器的访问速度。当然同时也会增加一点点服务器的负担。Gzip是比较常见的一种HTTP压缩算法。

四.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压缩

IIS默认并不支持HTTP压缩,需要进行简单的配置

在运行中输入“net stop iisadmin /y”停止IIS服务,运行完成后保存Metabase.xml;
 
1.打开Internet信息服务(IIS)管理器,右击"网站"->"属性",选择"服务"。在"HTTP压缩"框中选中"压缩应用程序文件"和"压缩静态文件",按需要设置"临时目录"和"临时目录的最大限制";
image

2.提醒: 经试验此步骤在本人机器上没有作用, 可以忽略.

这也是可以的,但是当网站开发不好或考虑不周到等原因会引起会员登陆后刷新或过一段时间即要求会员重新登陆,另外当网站出故障是不好分析。所以我建议使用应用池加上虚拟目录设置即可以解决,不用开多个站点或子域名来实现的。如下图:

\

3、启用内容过期

对于静态文件启用内容过期可以提高访问性能。首先网站的目录要划分合理,图片、CSS、JavaScript均放在单独目录下,然后在 IIS中选择目录,点属性-HTTP头,启用内容过期,可以选择7天后过去,这样,用户浏览器将比较当前日期和截止日期,以便决定是显示缓存页还是从服务 器请求更新的页,由于图片、CSS、JS通常变化较少,因此基本上都从本地缓存读取,从而加快显示速度。

\

4、启用Gzip压缩

HTTP压缩是在Web服务器和浏览器间传输压缩文本内容的方法。HTTP压缩采用通用的压缩算法如Gzip等压缩HTML、JavaScript或 CSS文件。压缩的最大好处就是降低了网络传输的数据量,从而提高客户端浏览器的访问速度。

使用方法是,右击“网站”“属性”,选择“服务”。在“HTTP压缩”框中选中“压缩静态文件”,“临时目录”建议单独设置另一个盘的目录下,并且增加IIS_WPG IUSR_hostname 权限。

\

在Internet信息服务(IIS)管理器,右击"Web服务扩展"->"增加一个新的Web服务扩展...",在"新建Web服务扩展"框中输入扩展名"HTTP Compression",添加"要求的文件"为C:\WINDOWS\system32\inetsrv\gzip.dll,其中Windows系统目录根据您的安装可能有所不同,选中"设置扩展状态为允许";
image

3.使用文本编辑器打开C:\Windows\System32\inetsrv\MetaBase.xml(建议先备份),
找到Location ="/LM/W3SVC/Filters/Compression/gzip用于设置gzip压缩,
找到Location ="/LM/W3SVC/Filters/Compression/deflate"用于设置deflate压缩.
上面两个节点紧挨着.并且设置的属性相同.
 

其实我觉得每天在3-4万会员访问,对这配置来说是够用的,按这配置每小时在线人数1500-2500在线人数是没有什么问题的。又些网友问,我也 是这配置为什么不能到1000人在线呢?在线人数多少网站性质也有关系,好多人都认为和主机配置有关,即忘记了优化网站为优先考虑条件。因为在线人数多 少,还受到IIS并发连接数大小(请求连接数),CPU 内存,I/O有直接关系,特别是I/O。但是优化网站是比较重要一项,它也决定了在线人数和访问速度的一部份。

对服务器的使用,一般都在应用的优化,数据库的优化,下面分享一下笔者的优化经验。

1、减少HTTP请求数量

这主要是修改网站代码,减少外部图片、CSS、JS等文件数量,手动合并多个CSS/JavaScript文件。

2、增加应用池 IIS6.0 默认一个应用池,默认请求次数为1000,你可以根据自已需要增加如2000等;但是我建议增加一个应用池比较好,因为在系统中有多个进程进行工作,特别对多核CPU来说,应好好利用多线程工作。如下图:

\

有网友说,增加请求次数后,有增加最大工作进程数不就可以了,用不着加多一个应用池,那么麻烦吧?增加多个应用池还开多个站点呢!

 



如果需要压缩动态文件,则将HcDoDynamicCompression设置为"TRUE",并在HcScriptFileExtensions中增加您要压缩的动态文件后缀名,如aspx;如果需要压缩静态文件,则将HcDoStaticCompression和HcDoOnDemandCompression设置为"TRUE",并在HcFileExtensions中增加您需要压缩的静态文件后缀名,如xml、css等;HcDynamicCompressionLevel和HcOnDemandCompLevel表示需要的压缩率,数值在0-10, 默认为0.
HcDynamicCompressionLevel属性说明:HcDynamicCompressionLevel Metabase Property
HcOnDemandCompLevel 属性说明:HcOnDemandCompLevel Metabase Property

说明: 这两个属性值一般推荐设置为9, 具有最佳性价比.但是在我的window server 2003上, 压缩率无论如何设置, jQuery和jQuery UI两个文件(58k/188k)压缩后的大小一直相同.(20k/45k). 

下面是我的实例:

<IIsCompressionScheme    Location ="/LM/W3SVC/Filters/Compression/deflate"
        HcCompressionDll="%windir%\system32\inetsrv\gzip.dll"
        HcCreateFlags="0"
        HcDoDynamicCompression="TRUE"
        HcDoOnDemandCompression="TRUE"
        HcDoStaticCompression="true"
        HcDynamicCompressionLevel="9"
        HcFileExtensions="htm                      html                      txt                      js                      css                       swf                      xml"
        HcOnDemandCompLevel="9"
        HcPriority="1"
        HcScriptFileExtensions="asp 
aspx dll exe"
> </IIsCompressionScheme> <IIsCompressionScheme Location ="/LM/W3SVC/Filters/Compression/gzip" HcCompressionDll="%windir%\system32\inetsrv\gzip.dll" HcCreateFlags="1" HcDoDynamicCompression="TRUE" HcDoOnDemandCompression="TRUE" HcDoStaticCompression="true" HcDynamicCompressionLevel="9" HcFileExtensions="htm html txt js css swf xml" HcOnDemandCompLevel="9" HcPriority="1" HcScriptFileExtensions="asp
aspx dll exe"
> </IIsCompressionScheme>
 

 

4.编辑完毕后保存MetaBase.xml文件;如果文件无法保存,则可能IIS正在使用该文件。打开"开始"->"管理工具"->"服务",停止"IIS Admin Service"后,即可保存;

全部设置完毕后黑客防线网安友情提示您在运行中输入“iisreset”重启IIS服务;
 
设置完成后,可以打开最知名的验证网站来验证,网址是http://www.pipeboost.com,找到如下图所示验证窗口Real-Time Acceleration Report,输入网址,单击“Analyze Url”按钮进行验证;
 
执行验证完成,显示如下图所示界面。如果Document Status的状态为Compressed,就说明压缩成功了,下面还有一些具体的数据,可以作为参考;

 

5.最后,重新启动IIS。可以到HTTP压缩测试网站验证结果.以jQuery为例, 核心类库和UI类库原始大小分别是57k和188k,压缩后分别是20k和45k:
image
我们通过Http头中的: Content-Encoding:gzip 属性判断返回后的数据已经启用了gzip压缩:
image 
使用YSlow检测, 当只启动静态文件压缩时, Gzip压缩评级为B:
image 
当同时启动了动态文件压缩时, Gzip压缩评级为A:
image

六.要点总结

1. 在修改MetaBase.xml文件时, 要停止"IIS Admin Service"服务. 否则无法保存.

2.静态压缩和动态压缩率最好设置为9. 

3.上文的步骤2, 即使不添加Web服务扩展效果也是相同的.

4.压缩率设置对js文件不起作用, 压缩后大小总是相同的.

5.图片文件即使启用了gzip压缩大小也没有变化.

 

七. 总结

本文总结了如何在IIS中启用Gzip压缩.  在半年前的项目中我为网站启用了Gzip, 今天整理此文主要为了整理自己的知识以便以后忘记时复习.
 


    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show.php?contentid-3845.html
网站维护教程更新时间:2012-12-04 22:05:12  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer