首 页 | 新 闻 | 技术中心 | 第二书店 | 《程序员》 | 《开发高手》 | 社 区 | 黄 页 | 人 才
移 动专 题SUNIBM微 软微 创精 华Donews人 邮
我的技术中心 
我的分类 我的文档
全部文章 发表文章
专栏管理 使用说明



 RSS 订阅 
最新文档列表
Windows/.NET
.NET  (rss)    
Visual C++  (rss)    
Delphi  (rss)    
Visual Basic  (rss)    
ASP  (rss)    
JavaScript  (rss)    
Java/Linux
Java  (rss)    
Perl  (rss)    
综合
其他开发语言  (rss)    
文件格式  (rss)    
企业开发
游戏开发  (rss)    
网站制作技术  (rss)    
数据库
数据库开发  (rss)    
软件工程
其他  (rss)    

积极原创作者 
coofucoo (109)
Aoouch (11)
NinGoo (28)
amh (72)
nizhigang2000 (8)
superyan (27)
iiprogram (83)
hongbo781202 (81)
Kendiv (113)
TechnoFantasy (52)
CSDN - 文档中心 - 网站制作技术 阅读:2098   评论: 0    参与评论
标题   谈网站压缩     选择自 songzx66 的 Blog
关键字   网站压缩
出处  
IT部门都想减少其网站的运行成本,毫无疑问会考虑减少带宽使用量。利用目前的网站压缩技术能达到90%的压缩比率,平均带宽节省2——3倍。然而执行中会受到浏览器和服务器里现有bugs的影响。本文将介绍如何成功地压缩HTML的流量,从而节省每月带宽的支出。
一、网站压缩的原理
IE4.0以上和Netscape 3.0以上的版本都有对WEB服务器传送来的压缩文件解压缩的功能,这个解压缩的特性直接建立在浏览器中了,不需要插件,并且默认就是激活的。IE向服务器发送“Accept-Encoding: gzip, deflate”标头,Netscape发送“Accept-Encoding: deflate”标头,以此表明它们能解压缩的压缩类型。
“deflate”是表明已压缩页面的一种数据格式,而非一种压缩技术。不同的压缩技术有不同的压缩量,但一般都以deflate格式输出。Gzip是传输时打包压缩页面的一种格式,该格式首先是传输10字节的标头,接着是已压缩的页面,最后是2字节的校验和、2字节指明原始文件的大小(见图1)。任何Gzip文件的前两个字节都是一样的,第三个字节是指明压缩的格式(0x08表示 deflate格式)。

图1:Gzip格式

当WEB服务器处理带有“Accept-Encoding:”标头的请求时,它要选择是送一个已压缩的页面或是一个标准的未压缩的页面。如果决定是回送已压缩的页面,它同时回送“Content-Encoded:”标头,说明编码的类型,如“Content-Encoded: gzip”(见图2)。浏览器将根据该标头决定在向浏览者呈现页面前是否要解压缩。

图2:被压缩的HTTP请求/响应


二、WEB服务器压缩工作量
服务器在压缩页面时有两个截然不同的情况:针对静态页面,页面可以提前压缩,并服务于多个请求。因为压缩每一个页面花费的时间大略是100 – 1000毫秒(取决于页文件的大小和压缩的质量),所以提前将静态页面压缩好以服务于多个请求,既节省CPU资源也能快速响应。对于动态页面如ASP、CFP等要难一些,不得不在对每一个请求响应时才压缩,因为每一个请求的结果完全不一样。
三、IIS5.0 的压缩功能
IIS5.0可以压缩动态和静态两种页面,默认的压缩选项是关闭的,为了打开它按以下步骤操作:
1、 打开IIS Manager
2、 找到Computer Node
3、 右击,选择Properties
4、 点击Master Properties的Edit按扭
5、 选择Service
6、 在其底部有一个HTTP Compression部分
7、 激活“Compress Application Files”,以使得ASP或CFP被压缩
8、 激活“Compress Static Files”,以压缩静态页面

图3:建立IIS压缩功能

IIS5.0执行其压缩功能是通过ISAPI过滤器(安装在C:\WINNT\System32\inetsrv\compfilt.dll)来完成,也意味着本机上所有的网站都要压缩。如果图3中的“HTTP Compression”是灰颜色的,可能是系统缺少压缩过滤器。
默认状态下,IIS5.0压缩功能只压缩扩展名为“htm”、“html”和“txt”的文件,因为这些文件的压缩比最大。当然,也可以让IIS压缩其他文件:
1、 打开命令提示(Command Prompt)窗
2、 改变当前目录到\InetPub\AdminScripts文件夹
3、 输入系列命令:
CSCRIPT.EXE ADSUTIL.VBS SET
W3Svc/Filters/Compression/GZIP/HcFileExtensions "htm" "html" "txt" "doc" "ppt" "xls"
CSCRIPT.EXE ADSUTIL.VBS SET W3Svc/Filters/Compression/DEFLATE/HcFileExtensions "htm" "html" "txt" "doc" "ppt" "xls"
4、 执行IISRESET.EXE
5、 关闭命令提示窗
当配置了静态压缩功能后,IIS过滤器就将所有已压缩的文件放入一个临时的地方,默认在:C:\WINNT\IIS Temporary Compressed Files,这些文件被多个请求重复使用,直到原始文件有改变。然而默认的临时存储空间大小是不加限制的,建议还是设置一个合理的值。
四、网站压缩目前存在的问题
IE5.5和IE6.0都有一个有关解压缩的bug影响用户浏览压缩页面,这个bug的有关资料查阅 Microsoft knowledge Base articles的Q312496(针对 IE 6.0)和 Q313712(针对IE 5.5)。因为IE不会将服务器返回的文件在送到如Adobe Photoshop这样的插件之前解压缩,那么Adobe Photoshop在接收到一个压缩文件时,有时会使得IE死掉。针对该问题,微软提供了一个客户端补丁,请参考微软产品支持与参考Q313712。
即使微软已经认识到这个问题并发布了一个补丁,但是成效不大,许许多多的人还是在运行有问题的浏览器,而不愿意安装补丁,最好是微软能发布一个服务器端的补丁。如果服务器以不同方式送回HTTP响应标头,浏览器插件就不会收到已压缩的数据,浏览器就能成功解压缩并呈现页面了。但目前还没有IIS5.0压缩过滤器的补丁。
但是有一些公司发布了其他的压缩过滤器,这些压缩过滤器有更多的特点并能避开IE的问题。Xcache( http://www.xcache.com)就是其中之一,它能应用到单个或多个网站,并可以选择要压缩那一个文件和何种文件类型。

相关文章
对该文的评论