鉴于互联网上的宽带有限,网络管理人员任何旨在加速接入速度的努力都是有价值的。其中的一个方法就是通过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号知识库文章。

本文转自 张善友 51CTO博客,原文链接:http://blog.51cto.com/shanyou/75257,如需转载请自行联系原作者

如何使用HTTP压缩优化服务器相关推荐

  1. 网管教程:如何使用HTTP压缩优化服务器(图)

    鉴于互联网上的宽带有限,网络管理人员任何旨在加速接入速度的努力都是有价值的.其中的一个方法就是通过HTTP压缩技术实现接入速度的加速,它通过减少在服务器和客户端之间传输的数据量,显著地提高网站的性能. ...

  2. 如何通过优化服务器提升网站的SEO排名

    在当今数字化时代,拥有一个高效.稳定的服务器对于网站的成功至关重要.然而,服务器不仅仅是为了提供网站的基本运行,它还可以对搜索引擎优化(SEO)起到关键作用,于是就有了多IP站群服务器这样对SEO非常 ...

  3. 吃鸡服务器不接受响应,绝地求生:蓝洞优化服务器性能,从此告别掉帧延迟!...

    原标题:绝地求生:蓝洞优化服务器性能,从此告别掉帧延迟! 很多玩家们都非常了解服务器的重要性,服务器响应时间也可以描述为'网络延迟'.如果服务器的响应时间减少(或者网络延迟减少) 的话,玩家们可以体验 ...

  4. 如何优化我的世界服务器,我的世界服务器怎么优化 服务器优化建议

    我的世界服务器怎么优化,新手腐竹经常会为优化服务器不知所措,今天小编为大家带来的是我的世界服务器优化教程和服务器优化建议,不知道怎么优化服务器的小伙伴不妨看看本篇服务器优化教程文章吧,希望大家喜欢. ...

  5. Android Q app内存压缩优化方案介绍

    Android Q app内存压缩优化方案介绍 原创文章,谢绝转载! Android Q新增了部分系统性能优化方案,这里简单学习下,本篇文章先分析app compaction. 一.愿景: 在保证后台 ...

  6. 路径压缩优化并查集的时间复杂度

    路径压缩优化并查集大家一定很熟练了,那么它的复杂度是多少呢?O(mα(n))O(m\alpha(n))O(mα(n))? 的确,很多人都是这么说的,但是事实上它的复杂度是O(mlog⁡1+m/nn)O ...

  7. 如何优化服务器的性能

    一.通常服务器的性能会卡在三个地方: cpu 网络 IO 磁盘 IO 二.在优化性能的时候,首先要判断性能的瓶颈在上述的哪个地方.然后对症下药,按照下面的方法来优化: 1.提高 CPU 性能的方法 并 ...

  8. 绝地求生优化服务器什么意思,《绝地求生》百日行动:优化服务器,封禁200万个账号...

    <绝地求生>百日行动:优化服务器,封禁200万个账号 2018-11-17 16:02:07来源:游戏下载编辑:嘉文四世评论(0) 今天,<绝地求生>官方微博发布了一篇名为&q ...

  9. 绝地求生优化服务器什么意思,绝地求生:蓝洞优化服务器性能,从此告别掉帧延迟!...

    原标题:绝地求生:蓝洞优化服务器性能,从此告别掉帧延迟! 很多玩家们都非常了解服务器的重要性,服务器响应时间也可以描述为'网络延迟'.如果服务器的响应时间减少(或者网络延迟减少) 的话,玩家们可以体验 ...

最新文章

  1. 如何高效地逛Github?
  2. workerman连接mysql_workerman Mysql使用
  3. 七牛云删除图片接口_图片基本处理(imageView2)
  4. 虚拟存储器(虚拟内存Vitual Memory)
  5. vue2.0 组件通信
  6. expecting statement错误的一种情况(phpstorm 8.0.2)
  7. oneproxy检测主从复制同步延迟
  8. 计算机蠕虫是一个程序或程序系列,它采取截取口令并试图在系统中,计算机蠕虫病毒是一个程序或程序系列,它采取截取口令并试图在系统中做非法动作的方式直接攻击计算机。...
  9. Vulkan in 30 minutes
  10. 电脑网络怎么添加计算机,Win10系统如何添加网络共享打印机
  11. JavaScript学习(八十三)—JavaScript书写位置、注释、以及输入输出语句
  12. 算法点心----求出用1,2,5这三个数不同个数组合的和为100的组合个数。
  13. 网易云音乐推荐中的用户行为序列深度建模
  14. 2022-03微软漏洞通告
  15. css制作三角形、带三角文本框、价格三角框
  16. 解决Minimum supported Gradle version is 4.6. Current version is 2.4.0
  17. STM32_4键位触摸按键实现单击、双击、三击、长按1s、长按2s以上每隔200ms、左右滑动1-3个键位等多功能程序
  18. pip安装pandas失败的问题
  19. 【Java SE】封装的详解
  20. flux 中的 buffer 的原理

热门文章

  1. Java——网络编程练习
  2. UVA 10588—— Queuing at the doctors
  3. LeetCode(集合)队列和栈的相互实现 golang
  4. java 自省_自知 自省 自立 自信 自尊 自治 自强 自制
  5. python程序开发总结_python开发总结
  6. Redis常见问题及其一些重点知识总结
  7. Makefile札记
  8. 【kali】kali换了root权限后无法打开firefox浏览器
  9. 使用头文件的原因和规范
  10. getsockname函数与getpeername函数的使用