Saturday, September 10

服务器提升性能三方法

这里以Apache的httpd服务器为例,介绍提升性能的三个方法。

1,使用expire模块,告诉客户端软件:该图片在一个月内有效,因此如果用户重新访问这个图片,客户端软件就知道从本地的缓存里掉出来,不需要通过网络访问服务器,重新下载该图片。
一般来说,可以把文本文件设定为一天有效,图片设置为一个月有效。
这种方式能减少网络流量及服务器负载,牺牲服务器的灵活性:如果图片更新了,用户需要一个月之后才能看见。

可能在“有效期”内重复访问同一个网站的人很少,但是你对于服务器可以这样设置:在前端放一个代理服务器,当用户访问这个网站时,代理服务器向后台的真正服务器请求数据。在这里,代理服务器就成了前文提到的“客户端软件”,如果文件还没有失效,就不需要麻烦后台那个真正的服务器了,可以直接返回给用户。在这种服务器构架上,用户与服务器之间的网络流量没有减少,但是减少了真正服务器的负载。当访问量很高的时候,节省下来的CPU时间还是很可观的。

2,使用Cache模块,web服务器load一个文件之后就保存在内存,以后不需要再从硬盘里载入。晤,很浅显的技术。为什么还存在这种bug呢?
当然,这种技术也存在第一种的牺牲灵活性的缺点。

3,把文件压缩之后在发出去。对于Apache 1.3,应该采用gzip模块;对于Apache 2.0,采用deflate模块。这些模块自动把文件压缩(我的经验是对于文本文件能够压缩到原来的30%-40%),把压缩后的文件发给客户端,然后客户端解压之后显示给用户。现在流行的浏览器都支持这种方式。这种方法的优点是减少网络流量,缺点是对于服务器、客户端,在压缩和解压的时候都需要时间和CPU。而且对于图形文件,基本上压缩不了,纯粹是浪费时间。所以如果你的网站多数是图形文件的话,这种技术帮不上忙。