动网论坛算是国内比较著名的一款论坛.从DVBBS7.0版本开始,动网重构了代码核心,采用缓存机制,程序和模板完全分离,在代码质量,权限等级,用户体验方面算是一个里程碑的作品了.虽然从7.0到现在的8.2,每一个阶段动网论坛都爆出了较大的漏洞(主要是上传和注入漏洞,7.0的欺骗上传漏洞使动网一度瘫痪),抛开这些,动网确实是一个不错的软件作品,我们可以从中学习到很多编程处理技巧.纵观现在市场上的一些web软件产品,都或多或少带有动网代码的影子.
由于工作上的需要,我于2005年开始研究动网7.0的代码,长时间的接触使我一度对代码熟悉起来,可以肯定的说,现在我对动网7.0的代码熟悉程度在95%以上.动网7.0最大的特点就是采用独有的缓存机制,这种缓存机制到现在还在被很多web产品在使用.下面我谈谈动网的缓存机制的理解.
缓存就是将用户频繁访问的数据放到内存中,二次访问时从内存中读取,而不需要频繁的访问硬盘,加快了数据处理速度,同时也减轻了服务器的访问压力. 那么什么样的情况下使用缓存呢?使用缓存首要的原则就是数据对所有用户来说具有共享性,说得具体点,就是每个用户浏览的页面结果都是一样的,不会是用户甲浏览的是一个页面结果,其他用户浏览又是一个结果.相同的效果才能使数据对所有用户具有较好的共享.当然,不同用户浏览出现不同效果也可以用缓存,但是这种缓存会使服务器具有内存崩溃掉,不推荐使用.举个简单的例子.网站首页的新闻头条,这些新闻总是从数据库中提取最新的几条,对所用用户,其显示结果都是一样的,所有用户浏览都是相同的结果,因此可以使用缓存.如果查询新闻信息,不同的用户查询可以查询到不同的信息结果,这里就不推荐使用缓存.
动网采用如下几种缓存:
1.数组缓存,采用getrows函数,将数据表字段置入一个二维数组中,通过数组下标遍历调用.如下面实例代码:
Set Rs=Dvbbs.Execute("Select
TopicID,boardid,title,postusername,postuserid,dateandtime,child,hits,votetotal,lastpost,lastposttime,istop,isvote,is
best,locktopic,Expression,TopicMode,Mode from dv_topic Where istop>0 and TopicID in ("&Forum_AllTopNum&") Order By istop desc, Lastposttime Desc")'执行
动网论坛缓存技术研究
最新推荐文章于 2025-08-08 22:07:46 发布