动态发布站点的并发访问升级简易方案

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

问题:

asp/php等动态建站,往往出现访问量较大后出现网站访问故障问题,问题在哪呢?

通常网站有新闻栏目,假设一个网站新闻栏目建立在/news/目录下 ,通常都有一个显示某条纪录的item.asp?id=1234,用户访问某个连接时候,往往调用这个动态脚本文件,进行打开数据库连接、查找纪录。。。等一系列动作。并发10个人没问题,100个、1000个问题就来了,导致服务器压力增大。

但实际上,由于ID为1234文章在你发布的时候,内容已经确定,所以基本上A用户访问跟B用户访问时候做的是同一个动作,内容也是一样,但是却有N次数据库打开读取动作。一般情况下,数据库操作属于高消耗系统资源的操作。

思路:

知道此原因,我们可以读一次数据库,然后将读取得内容存储为静态页面,以后的访问读取此静态页面。这是提高站点并发访问的基本措施。一台普通的PC服务器处理静态页面访问,一天可以达到700W 此请求。

但是,可能很多站点已经在设计时就属于动态建站考虑,所以包括连接、导航等依赖于动态模式,全部改成类似新浪、搜狐等静态发布模式不恰当,所以需要在不改变整体站点访问结构上进行调整。

具体方案:

对类似 /item.asp?ID=1234 这样的asp程序进行以下修改:

1、拷贝一份这样的文件,假设名为item_bak.asp

2、将Content.asp代码首处做以下修改:

ID=request("ID")

txtfile="Item_" + cstr(ID)+".htm"

if FileExist(txtfile) then

else

GenHTML(txtfile,"Item_bak.asp?id="+cstr(ID))

end if

response.redirect txtfile

response.end

其中函数FileExist为判断 txtfile文件是否存在于服务器上,函数GenHTML为 利用xmlhttp服务器端组件将读取item_bak.asp?id=1234的文件的html内容后写在服务器上的当前目录。

这样,每一篇文章就会仅被读取数据库一次,然后之后所有的访问都被定向到静态html文件,缓解服务器压力。

总结:

唯一的不足是会增加硬盘空间需求。

但是基本上不会造成连接混乱,严守原来布局。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航