简介:
1. HTTP压缩概述
HTTP压缩是在Web服务器和浏览器间传输压缩文本内容的方法。HTTP压缩采用通用的压缩算法如gzip等压缩HTML、JavaScript或CSS文件。
2. HTTP压缩工作原理
Web服务器处理HTTP压缩的工作原理如下:
Web服务器接收到浏览器的HTTP请求后,检查浏览器是否支持HTTP压缩;
如果浏览器支持HTTP压缩,Web服务器检查请求文件的后缀名;然后输出可以压缩的文件给客户端
如果请求文件是HTML、CSS等静态文件,Web服务器到压缩缓冲目录中检查是否已经存在请求文件的最新压缩文件;
如果请求文件的压缩文件不存在,Web服务器向浏览器返回未压缩的请求文件,并在压缩缓冲目录中存放请求文件的压缩文件;
如果请求文件的最新压缩文件已经存在,则直接返回请求文件的压缩文件;
如果请求文件是ASPX等动态文件,Web服务器动态压缩内容并返回浏览器,压缩内容不存放到压缩缓存目录中。
iis的页面压缩可以分为:“deflate” “GZIP”这两种,
1:GZIP,Deflate 两种有什么区别
2:从HtmpModule代码来看,应该是优先使用Defalte,那么是不是如果 GZIP,Deflate同时存在优先使用Deflate。但在网站的测试中发现,Defalte压缩比GZIP大
我们这里主要讲的是GZIP压缩,Deflate 对他还不是很了解,就先说他了。
IIS 6.0中配置HTTP Gzip压缩的步骤:
在Internet信息服务(IIS)管理器,右击"Web服务扩展"->"增加一个新的Web服务扩展...",在"新建Web服务扩展"框中输入扩展名"HTTPCompression",(这名字可随意起)添加"要求的文件"为C:/WINDOWS/system32/inetsrv/gzip.dll,其中 Windows系统目录根据您的安装可能有所不同,选中"设置扩展状态为允许";

接着------
打开Internet信息服务(IIS)管理器,右击"网站"->"属性",选择"服务"。在"HTTP压缩"框中选中"压缩应用程序文件" (如有动态文件就钩上这项) 和"压缩静态文件",按需要设置"临时目录"和"临时目录的最大限制";(我这里设置的是1024mb)
注:如要在硬盘其他地方上建一个目录,就要给这目录“IUSR_机器名”这个用户的写权限。
如果压缩动态文件(PHP,asp,aspx)就不需要了,因为它的页面是每次都动态生成的,压缩完就放弃(就是说动态压缩不需要给他设置另时目录。)
C:/Windows/system32/inetsrv/metabase.xml ,打开metabase.xml 文件,请在任何改动前再次确认该文件已经备份。
搜索并找到 metabase.xml 文件中的<IIsCompressionScheme Location ="/LM/W3SVC/Filters/Compression/gzip"片段,依照原有文件的格式添加你希望进行 HTTP 压缩的文件扩展名,静态文件HcFileExtensions可添加 JS,CSS 等; 动态文件 HcScriptFileExtensions 可添加"ASPX""ASMX",如下:
这段是“deflate”压缩,
<IIsCompressionScheme Location ="/LM/W3SVC/Filters/Compression/deflate"
HcCompressionDll="%windir%/system32/inetsrv/gzip.dll"
HcCreateFlags="0"
HcDoDynamicCompression="TRUE"
HcDoOnDemandCompression="TRUE"
HcDoStaticCompression="FALSE" ----------默认是这样
HcDynamicCompressionLevel="9" --------动态压缩率“9”性能比最好。默认是0
HcFileExtensions="htm -------要压缩的静态后缀名。
html
js
css
txt"
HcOnDemandCompLevel="10" --------静态压缩率
HcPriority="1"
HcScriptFileExtensions="asp -------要压缩的动态后缀名。
aspx
asmx
dll
exe"
>
</IIsCompressionScheme>
这一段是“gzip”压缩了。
<IIsCompressionScheme Location ="/LM/W3SVC/Filters/Compression/gzip"
HcCompressionDll="%windir%/system32/inetsrv/gzip.dll"
HcCreateFlags="1"
HcDoDynamicCompression="TRUE"
HcDoOnDemandCompression="TRUE"
HcDoStaticCompression="TRUE"
HcDynamicCompressionLevel="9" --------动态压缩率“9”性能比最好。默认是0
HcFileExtensions="htm -------要压缩的静态后缀名。 html
js
css
txt"
HcOnDemandCompLevel="10" --------静态压缩率默认是就是10
HcPriority="1"
HcScriptFileExtensions="asp -------要压缩的动态后缀名。
aspx
asmx
dll
exe"
>
</IIsCompressionScheme>
注意“Compression/deflate”和“Compression/gzip”两个片段都可以修改。动态压缩等级,HcDynamicCompressionLevel 建议设置为“9”
不过其实改这个片断“Compression/gzip”就可以了,我们主要是进行“gzip”压缩吗。
编辑完毕后保存MetaBase.xml文件;如果文件无法保存,则可能IIS正在使用该文件。打开"开始"->"管理工具"->"服务",停止"IIS Admin Service"后,即可保存;
最后,重新启动IIS。可以到http://www.port80software.com/tools/compresscheck.asp验证结果
不过通常可能不会有太明显的感觉
最后要说的是:
这里要提到的是:IIS6.0的压缩,会对HTML、CSS等静态文件进行优化。IIS6.0会将这些压缩好的文件放在一个缓存目录中,如果没有修改,IIS6.0将直接返回缓存目录中的文件。而不是对这些文件每次都压缩。
这个就是iis6.0最大的优点了。增加了可以放缓存的文件夹。
下表列出了常见的浏览器和它们支持的编码类型。
| 浏览器 | 支持的编码 |
| Firefox 1.0, Mozilla 1.x, Camino | gzip, deflate |
| OmniWeb 5.x | bzip2, gzip, deflate |
| Safari | gzip, deflate |
| Internet Explorer | gzip, deflate |
总结
使用HTTP压缩是一种简单易行的提高服务器性能和减少带宽消耗的方法,它也有潜在的不足,那就是增大了CPU的开销。但是相对于它带来的好处而言,这个开销是物有所值的。 一般能提高带宽%50的使用率。cpu也就开销不到%10吧
好了我知道的多写完了,希望对大家有所帮助!
本文详细介绍了HTTP压缩技术,包括GZIP和Deflate两种压缩方式的工作原理及IIS6.0中的配置步骤。通过HTTP压缩可以有效提升服务器性能,减少带宽消耗。
948

被折叠的 条评论
为什么被折叠?



