日期:2010-03-04  浏览次数:20976 次

打造一个高性能稳定的web站点一直是站长和程序员的梦想,本文用作者的一次亲身经历的来说说如何利用xml缓存技术实现站点的高性能。我是从今年开始做138手机主题网的,采用SQL2000做为数据库,开发语言用的是Asp,查询的时候都是动态查询,直接用like %的方式,那个时候反正一天的访问量小,同时在线的时候也就几十个人而已,所以服务器也就能胜任要求,随着访问量慢慢增加,当同时在线达到几百人时,此时服务器开始不堪重负,CPU常常达到100%不降,网页打开速度也超级慢,一个查询页面需要几秒钟甚至更长,于是我开始考虑优化程序和数据库,数据库建立索引,不是很理想,因为用的是like '% 这种方式,于是我想到了缓存,而xml本身的特点决定了他非常适合做数据库的缓存,好东西不敢独享,特发布出来,以便同行交流,共同进步。
实现的思路是这样的:程序读取信息时,先判断是否缓存了xml数据,如果有,则直接从xml中读取信息,否则从数据库中读取,并将此次结果生成xml文件,以便以后调用,加快速度,同时判断xml缓存文件是否过期,如果过期则需要重新生成xml。下面是具体的代码。

xmlcachecls.asp
<%
Rem xml数据缓存类
'--------------------------------------------------
'转载的时候请保留版权信息
'作者:walkman
'网址:手机主题 http://www.shouji138.com
'版本:ver1.0
'欢迎各位交流进步
'--------------------------------------------------

Class XmlCacheCls

       Rem 私有变量定义
       Private m_CacheTime              '缓存时间,单位秒
       Private m_PageSize              '每页大小
       Private m_CachePageNum       'xml缓存页大小
       Private m_XmlFile              'xml路径,用绝对地址,不需要加扩展名
       Private m_Sql                     'SQL语句
       Private m_TableName              '表名或者视图名
       Private m_Columns              '列名 用,隔开
       Private m_CurPage              '当前页
       Private m_CacheType              '缓存类型:1,列表 2,详情
       Private m_DataConn              '数据源,必须已经打开
       Private m_QueryType              '查询类型:1,直接用sql 2,用存储过程

       Private m_SQLArr              '返回的数据数组
       Private m_RecordCount
       
       
       Rem 公共属性

       '缓存时间
       Public Property Let  CacheTime(v)
              m_CacheTime = v
       End Property

       Public Property Get  CacheTime
              CacheTime = m_CacheTime
       End Property

       
       '每页大小
       Public Property Let  PageSize(v)
              m_PageSize = v
       End Property

       Public Property Get  PageSize
              PageSize = m_PageSize
       End Property



       'xml缓存页大小
       Public Property Let  CachePageNum(v)
              m_CachePageNum = v
       End Property

       Public Property Get  CachePageNum
              CachePageNum = m_CachePageNum
       End Property



       'xml路径,用绝对地址
       Public Property Let  XmlFile(v)