如何使用HTTP压缩优化服务器

鉴于互联网上的宽带有限,网络管理人员任何旨在加速接入速度的努力都是有价值的。其中的一个方法就是通过HTTP压缩技术实现接入速度的加速,它通过减少在服务器和客户端之间传输的数据量,显著地提高网站的性能。数据压缩本身并不新鲜。但是,这种方法的特色在于对服务器到客户端之间的数据压缩是实时的,很少有用户知道这种方法。
HTTP压缩技术,无需客户端配置,它是一种最为简便的提高网络速度的方法。本文旨在讨论这种技术是如何工作的?其优点是什么以及如何实现在Apache和IIS上的数据压缩?

为何要压缩?

绝大多数的用户对压缩技术的了解来自对下载的一大组文件进行压缩、解压和打开等体验,这种压缩技术也可以用于向客户端传输的数据的压缩方面,因为这是一种主动的处理过程,服务器可以减少网页发送的大小,从而降低用户下载的时间,最大效率地利用宽带。

通过压缩技术,你可以将HTML文件压缩到原来大小的一半。这样,把更多的时间留给了客户端,去下载更多带宽的工作量。这种压缩,是在不影响网站实际工作流程、网页设计和服务内务等情况下实现的,唯一改变的是信息传输的方式。

不过,这种方法也有他的限制。

适合压缩的文件类型

当然,并非所有的文件需要压缩。比如,已经压缩的文件诸如JPEG、GIF、PNG、电影和打包内容等不需要HTTP压缩过滤技术。对它们再次压缩将无法得到显著减小文件体积的效果。

同时,网站还有大量的文本内容诸如HTML、XML、CSS和RSS等,他们都需要进行压缩。压缩的程序取决于文件的类型,绝大多数的HTML文本文件压缩率为50%。而用了很格式的网页(例如用了大量的表格来规划页面)可以进一步压缩,最大可压缩到原有大小的三分之一。

幸运的是,大多数HTTP服务器都提供了选择对哪一类型文件进行压缩的能力,服务器就可以选择文件类型进行压缩,那些不适合压缩的文件会排除在外。

实现HTTP压缩

HTTP压缩,是服务器的功能,而浏览器也会自动地支持而无需对客户端进行另外的配置。要想启用服务器压缩,只需要简单的对服务器进行一些设置。

要启用HTTP压缩的设置, Apache、IIS6和IIS的更老版本的设置方法都不同。

Apache

Apache 2.0包含了mod_deflate模块,这个模块对服务器内容进行动态的Gzip压缩。这种压缩可以是对所有内容无差别的——对IE浏览器,所有的内容都是经过压缩的,或者是选择性的,仅压缩指定的MIME类型,MIME类型由HTTP应答头确定,这个HTTP头可以是由Apache自动生成或是由动态程序(例如CGI)的输出。

要实现内容的无差别压缩,可以在Apache配置文件中对整个站点或需要启用压缩的目录加入SetOutputFilter指示如下:

SetOutputFilter Deflate

要启用对特定MIME类型内容的压缩,可以在配置文件中使用AddOutputFilterByType指示,例如下面这样:

AddOutputFilterByType DEFLATE text/html

注意,所有被指定MIME类型输出都将被压缩,无论它是来自于一个静态的磁盘文件还是一个动态程序(如CGI或mod_perl)输出。

有些老的浏览器无法正确的处理压缩过的内容,这时可以用BrowserMatch指示来过滤掉特定的浏览器类型,你可以查看mod_deflate 帮助手册获取更详细的资料。

IIS 6

IIS 6包括了一个简便易用的内置压缩组件。由于是内置式的,它不是通过IISAPI接口,它的压缩速度极快,是IIS 5和更早版本IIS的第三方HTTP压缩组件的最佳替代品。压缩系统可以设置对动态(例如脚本输出仙鹤)和静态内容进行压缩,它也可以在目录中缓冲压缩信息,这样当再次访问以前访问过的内容时,无需再次进行压缩从而改善了动态和静态内容的访问性能。

为了实现在IIS 6中的HTTP压缩技术,用户打开网站的属性页面,编辑全局属性,切换到“服务”标签,在HTTP压缩选项中配置选择项。

缓冲的文件存储于临时目录中,默认的设置是IIS中的元数据目录的子目录下。该目录必须位于NTFS格式分区上,你可以设定缓冲区的大小或是设定为无限,我们建议最大可设置为该分区的两倍(这些数据还包括了动态脚本的输出内容)。

IIS5和IIS的更老版本

IIS5和IIS的更老版本没有内置压缩功能,但是,它们支持ISAPI过滤器。我们建议用户使用Port80的

ZipEnable。虽然也存在其它类似功能的产品,但它是少数微软特别推荐的产品之一,而且它与IIS 6兼容,通过配置IIS 6的设置,它可以将IIS6的HTTP压缩功能进一步在目录级别上进行进行控制。

服务器的性能表现

显然,对传输数据进行压缩需要一定的CPU时间,这种压缩过程可能会对网站造成不良的影响,因为选定的每个目标在发送前都必须进行压缩。这里IIS6领先了Apache一小步,它建立了一个缓冲区域,放压缩文件放在里面,这样对于那些被频繁访问的内容可以大大减少CPU压缩处理时间。但这不能完全避免实时在线压缩的需要,大量的动态的内容还是必须被在线压缩,而这些动态内容所需的缓存空间可能极其巨大。

如果可以节省50%的带宽而只牺牲网站不到10%的CPU时间。这样做是完全值得的,特别是对于那些按网络流量计费的企业来说更为划算。

浏览器的支持和动态内容

如今,绝大多数的现代浏览器支持压缩技术,但是,具体的压缩方式取决于浏览器。不过你无需对此担心,因为只有浏览器指示支持一种压缩方式时,Web服务器才会发送压缩内容。尽管如果,了解一下这种处理机制和不同浏览器支持的压缩类型仅是一件有意义的事。

浏览器在要求一个网址时,会把支持的压缩格式通过Accept-Encoding的HTTP头提交给服务器,Apache或其它Web服务器则从HTTP_ACCEPT_ENCODING环境变量读取这个信息,这个过程无需你人为干预,Apache在浏览器支持压缩的情况下会自动对发送的内容进行合适的编码。

下表列出了常见的浏览器和它们支持的编码类型。

浏览器
支持的编码

Firefox 1.0, Mozilla 1.x, Camino
gzip, deflate
OmniWeb 5.x
bzip2, gzip, deflate
Safari
gzip, deflate
Internet Explorer
gzip, deflate

“Identity”这个词有时会出现在浏览器支持的编码列表中,这个词的意思就是支持非压缩内容。所有的浏览器都会默认对它提供支持,不过有些没有特别列出。

如上所示,现代的浏览器都支持压缩技术。当发出URL请求时浏览器会自动提供支持的编码。如果你需要使用HTTP压缩技术,只需要对服务器端进行设置就足够了。

总结

使用HTTP压缩是一种简单易行的提高服务器性能和减少带宽消耗的方法,它也有潜在的不足,那就是增大了CPU的开销。但是相对于它带来的好处而言,这个开销是物有所值的。

而且,如果你发现它并没有带来想象中的服务器性能提升,要禁用它也非常简单。它没有改变过你的站点内容,改变的仅是数据传输的方式而已。

附注:
在运行微软Internet Information Services (IIS) 6.0的Windows Server 2003系统上,使用GNU zip(Gzip)进行压缩的静态文件可能会不可用或包含有来自Web服务器中其他文件的内容。如果出现这种情况,返回客户端的页面将会生成出错,而且还可能造成访问冲突的现象。
上述问题可能影响到“Outlook网络访问(OWA)”用户,并可能导致代码错误信息返回到OWA页面上。

微软已针对上述问题发布了修复补丁,其版本号为831464,大小为430 KB。该补丁对应微软第831464号知识库文章。

点击这里下载该补丁的简体中文版。

http://www.cnblogs.com/shanyou/archive/2005/08/20/218927.html
http://www.cnblogs.com/dudu/archive/2004/12/12/76085.html
http://blog.joycode.com/moslem/archive/2005/08/19/62173.aspx

本文来自合作伙伴“doNET跨平台”,了解相关信息可以关注“opendotnet”微信公众号

时间: 2024-12-23 10:19:12

如何使用HTTP压缩优化服务器的相关文章

优化服务器的性能方案设计

1.PHP+FTP远程上传文件至服务器 为了优化服务器的性能,现在主服务器上只放程序文件,用一台服务器专门放静态文件,像图片,游戏客户端文件等都放上面.通过URL来使用这上面的文件.. 为了解决这个问题,决定采用PHP通过FTP上传到文件服务器.当然你得有域名指向FTP才能访问你的图,使用FtpClient类可以轻松做到.用ftp需要传两次太慢了,ftp上传过程:先传到项目服务器再传到图片服务器.   2.其实比较实用的是做磁盘映射,你有两台服务器一台做web服务器架设iis/apche一台做图

php中10个不同等级压缩优化图片操作示例_php技巧

本文实例分析了php中10个不同等级压缩优化图片操作.分享给大家供大家参考,具体如下: 今天找到一个php写的压缩图片程序,可以分10个等级(0-9)来压缩,0等级时压缩比率不是很大,图片不会失真:随着压缩等级不断增大,图片会变得越来越不清晰,通常压缩后图片大小可以减少到原来的50%,压缩比还是挺大的. 如下是php压缩图片程序 <?php Header("Content-type: image/PNG");/*告诉IE浏览器你做的程序是张图片*/ $image = @image

实时裁剪压缩图片服务器 Bolt

Bolt 详细介绍 介绍 Bolt是一个实时裁剪压缩图片服务器,其比nginx的image_filter快2倍以上,主要是因为Bolt对一张图片只做一次处理,就算在处理图片的过程中,其他的客户端也在请求此图片,Bolt也能保证只有一个线程在处理此图片. 另外Bolt替换缓存机制,处理过的图片不再进行第二次处理,除非内存不足的时候,Bolt才会处理LRU算法来删除缓存中的图片,在启动Bolt的时候可以使用"--max-cache"启动参数来设置最大内存限制.Bolt使用LRU算法来淘汰缓

思科推出UCS S系列存储优化服务器、下一代思科企业云套件和 面向安全混合云的思科ASAP数据中心

北京,2016年11月2日--思科今日宣布推出UCS S-Series系列产品.该系列是思科统一计算系统(UCS)产品组合中的一个全新存储优化服务器类别,专门设计用于应对诸如大数据等数据密集型工作负载的需求,以及帮助部署软件定义存储.对象存储和数据保护解决方案.UCS S系列可有效应对物联网.视频.移动计算.协作和分析等生成的非结构化数据的快速增长,让企业能够快速访问和分析数据,生成实时洞察. "未存储的"数据 数据已成为每家企业的生命线,而数据使用方式正在快速改变.传统上,数据在存储

x86机架优化服务器则在出货量和营收上分别增长了3.9%和2.4%

第二季度,全球服务器出货量同比增长了4%,营收却下降了3.8%.国内服务器厂商浪潮集团的出货量则首次跻身全球前五名.2013年第二季度全球服务器厂商营收排名(美元)第二季度,全球服务器厂商的营收达到123亿美元,低于去年的128亿美元,降幅为3.8%.IBM在营收方面仍然称霸全球服务器市场,该公司第二季度的营收接近32亿美元,占全球总收入的25.6%,主要归功于其Z系统.惠普.戴尔.甲骨文.思科则分别列二.三.四.五位.在这前五大厂商中,IBM.惠普.甲骨文营收同比都出现了下滑,戴尔和思科营收则

IIS 性能优化 服务器_win服务器

IIS性能优化 1.调整IIS高速缓存 HKEY_LOCAL_MACHINE SystemCurrentControlSetServicesInetInfoParametersMemoryCacheSize MemoryCacheSize的范围是从0道4GB,缺省值为3072000(3MB).一般来说此值最小应设为服务器内存的10%.IIS通过高速缓存系统句柄.目录列表以及其他常用数据的值来提高系统的性能.这个参数指明了分配给高速缓存的内存大小.如果该值为0,那就意味着"不进行任何高速缓存&qu

ASP.NET页面进行GZIP压缩优化的几款压缩模块的使用简介及应用测试!(附源码)第1/2页_实用技巧

在介绍之前,先简单说一说ASP.NET服务端GZIP压缩模块的作用及工作原理,很多人编写网页的时候页面因为使用了大量的JS特效又或者放置很多大型动态广告导致了页面或脚本体积庞大,通常都会使用一些压缩工具本地对页面或脚本进行一定的压缩后再上传到服务器,但这样的压缩工具一般压缩率有限,优化自然也不明显,本文章介绍的压缩模块的作用就是对asp.net的页面或脚本等资源进行高强度GZIP压缩(一般能压缩到只有1/5的体积),而且压缩的过程是发生在客户端请求aspx页面的时候由服务端进行压缩处理后再传送给

在IIS上启用Gzip压缩详细方法(HTTP压缩)_win服务器

一.摘要 本文总结了如何为使用IIS托管的网站启用Gzip压缩, 从而减少网页网络传输大小, 提高用户显示页面的速度. 二.前言. 本文的知识点是从互联网收集整理, 主要来源于中文wiki. 使用YSlow检测网站启用了哪些优化时, Gzip是十分关键的一项. 启动Gip压缩将立竿见影的减少页面的网络传输大小. 三.HTTP压缩概述 HTTP压缩是在Web服务器和浏览器间传输压缩文本内容的方法.HTTP压缩采用通用的压缩算法如gzip等压缩HTML.JavaScript或CSS文件.压缩的最大好

Adobe Acrobat怎么压缩优化pdf

  缩小大小的PDF文档 1.运行Adobe Acrobat ,打开要压缩的文档,接着点击 文件-另存为-缩小大小的PDF 2.在弹出的对话框选择要兼容的版本,然后单击确定 3.改好文件名,点击保存 优化的PDF 1.打开要压缩的文档,接着单击文件-另存为-优化的PDF 2.单击统计空间使用情况,查看PDF空间分布 3.上面我们看到,这个PDF文档大部分空间是图像占据着,所以我们主要优化图像项就可以了.设置参数如下 4.下面看下,三个文件的大小比较.可以发现第二种方法要好很多,推荐使用