用纯软件的方式提高WEB服务器反应速度
?
摘要:本文提出了一个用纯软件的方式提高WEB服务器响应速度的方案,这个方案具有硬件费用低,安全,高效等优点,并且通过与常用方案的比较阐述了其原理和应用前景。
Abstract: This paper presents optimistic solution that increases the speed that WEB server respond with with the pure software method,this solution has the hardware expenses low, safety, wait the advantage efficiently, and pass with the comparison of the in common use solution expatiated its principle with apply the foreground.
关键词:PHP,Mysql,APACHE,FREEBSD UNIX
中图分类号:TP3???? 文献标志识码 B
1 引言
??? 我曾经架设过一个在UNIX服务器上运行的基于APACHE WEB服务器的网站,在设计的初期,出于提高WEB服务器反应速度的考虑,我们产生了一个大胆的方案,但是基于系统安全性和稳定性的考虑,最后没有使用这个方案。然而,我们觉得这个设想对于提高WEB服务器的反映速度有很大的作用,如果能够用一定的时间作出一套基于这个设想的完整方案,将会大大提高WEB服务器的反映速度。现在我们已经用PHP这种脚本语言基本实现了这个方案。
2 方案的由来
这个网站是一个关于旅游的综合性站点,包括旅游景区,景点信息,各地的宾馆饭店,民间特产,民风民俗等,根据用户的要求分为3个功能模块:后台数据库管理模块,前端显示模块,注册用户管理模块。注册用户可以在任意时间地点登陆网站反映最新的景区动态,如新开通了几个旅游景点,各地的特产等。
由于整个网站基于MYSQL数据库,网页中的所有媒体信息包括文字,图片,视频文件等,都存储在数据库中,当浏览者访问时,所有的页面都动态生成,风格和样式用PHP程序控制,所以WEB服务器的响应速度会很慢(当然,响应速度与硬件的性能有直接关系,但是当硬件条件不能改善的时候,也可以用软件来弥补)。怎样来解决这个问题?笔者当时正在研究PHP的一组文件操作函数,并且想写一个关于文件操作的类,于是想到能不能先生成一个静态页面,准确的说是生成一个文件夹,包括一个HTM文件,和页面中嵌入的图片和视频文件,然后将HTM文件的路径存入MYSQL数据库。这样用户请求的是静态页面,一次生成可以让用户无数次访问,而不是用户访问的时候每次临时生成。这样既可以减轻MYSQL数据库的负担,又可以提高WEB服务器的响应速度。于是我们提出了此方案的原理,详见原理图1。其中椭圆和圆代表对象或群体,矩形代表功能模块。
3? 此方案的原理
??? 首先我们看一下这两个原理图,其中原理图1,是我们提出的方案,原理图2时目前大部分网站所使用的方案。比较原理图1和原理图2,你会发现原理图1比原理图2多了一个文件对象,这是两种方案的关键的区别,这个文件对象实际是大数据块如图片,大量的文字,视频等的载体。当各个景区的管理员即已注册用户登录以后,他们将景区信息如文字,图片,视频等提交到服务器,用户管理模块将这些数据生成相应的文件存储到相应的目录下,同时生成一个固定风格的网页,并将对应的目录转换为网络路径后存储到MYSQL数据库中。其中生成的网页中显示了相应景区的图片,文字,视频等。显示模块只要在数据库中调用相应的路径就可以了。后台管理模块主要是给网站管理人员使用。
?
4 常用方案和此方案的比较
?? 出于安全性的考虑,大部分网站使用都是第二种方案,然而第一种方案我们至今还没有找到攻击它的方式。下面分几个方面来比较这两个方案。
硬件费用:要达到相同的响应速度,在硬件方面方案2要比方案1付出几倍甚至更多的资金。
软件费用:方案1的软件的编写要比方案2的编写更有难度,不过总的来说方案1要比方案2的硬件投资要少的多。
安全性和稳定性:方案1可能(我还不能证明这个方案绝对安全)不如方案2安全和稳定。因为方案1涉及到文件操作。
总的来说,方案1更适合中小企业或教育类网站,可以节省资金,方案2是目前大的商业站点的必选。
5 分析第一种方案的安全性
方案1的弱点是它的文件操作,有恶意的人(以下简称黑客)会有如下的机会来攻击用方案1来实现的网站。
(1)??? 提交恶意代码。已注册的用户可以提交大量的文字,黑客会将他们自己写的代码嵌入文字中,然后提交到网站上。因为方案1中是将这些文字保存为文件,所以黑客可以直接访问这个文件,来执行他们的恶意代码。
(2)??? 提交恶意文件。将恶意代码文件作为图片上载,然后执行,比方式(1)需要更多的技巧。
(3)??? 用某些软件探测APACHE服务器在UNIX系统上的系统用户和密码,然后用这个用户登录,为所欲为。
如何防止(1)攻击呢?我们在PHP程序中过滤了WEB程序中的标记如“”等,黑客提交的代码无法执行,并且我们生成的文件的名字是随机的,黑客根本不可能找到自己提交的文件。对于(2)攻击,我们存储的图片文件并没有扩展名,并且名字不是根据用户提供的名字来命名的,也是随机生成的。为了以防万一,我们对图片文件的类型作了分析,并且限制图片的类型和大小,只能是BMP和JPG格式的。所以,黑客成功的几率几乎等于零。
对于(3)攻击,到现在为止,我们还不知道有能够破解系统用户密码的软件,并且是在不确切知道这个系统用户的名字的情况下,所以黑客如果有这样的功力,那么他们的攻击对象应该不是这些小的网站。
?
6 结束语
综上所述,我们认为方案1是一种中小企业网站的性价比较高的解决方案,应该更好的推广和利用。
?
?
?