先大概说一下
数据库:
记录集:
在大富翁上你可以发现,最常使用的是待答问题第一页、第二页..。
而每次都必须做一次全数据库检索和排序,虽然有cache的存在使得实际上效果很好,
但这必须是并发少为基础的。
方案:第一次做此检索时记录下这个检索集合,即id系列。下次就可以使用in (id list)
当有记录被提升时,去掉id list的它或最后一个,把他加到第一个。如操作肯定比
数据库检索有效率,因为这样最大限度的利用了原来的结果。
扩展:检索关键字
设定一个库 字段为 key,idlist,count,maxid
当进行一个查询 比如 关键字“Delphi”则查询开始。记录id list,count,和检索时
数据库中最大的id号。当再次查询时如果数据库中的maxid>检索集的id号,则可以
select * from xxx where id in ( idlist ) or id > id maxid
其实还是利用以前的检索成果。
用比较小的代价换取大的检索性能应该是值得的。
读取数目,题目数目,回答数目等等,能不用query就不用,直接写到数据库中,变化时
更新,这样虽然多了写的时间,但大大少了读的时间。
网页:
现在的所有网页都是asp,这是绝对没有必要的,比如这个页面,你看和我看有差别吗?
没有,差的只是一些个性化的东西,这些东西可以用include,也可以用frame,方正办法
多多,而不变的部分可以写到文件里,比如这个页面,可以在有人加帖的时候写成一个文
件,而asp完成个性化部分后,把这个文件包含进来就可以了,何苦在各位读的时候都苦苦
都建立一回。
代码优化:
释放和缓冲是矛盾的,这个需要服务器和代码配合好。所以我先不多说,但这个优化
是肯定的,现在的代码在缓冲上并没有什么利用,其实不合理。特别在recordset上尤其
明显。
还有就是字符串,其实这个很容易被忽视,包括写delphi时,很多人以为
for i:=1 to 10000 do
s:=s+'hhhhhhhhhhhhhhhhhhhhhhhhhh'+#13#10;
和
st:TStringList;
for i:=1 to 10000 do
st.add('hhhhhhhhhhhhhhhhhhhhhhhhhh');
区别不大,其实大大的错了,第一个其实奇慢无比。第二各很快。
delphi是如此,基于vb的asp更甚之。所以一定要改。
最后拜托,我实在近期没时间,哪位完成我遗志了,请献给大富翁吧。