discuz!NT 3.0 优化(1)

本文详细介绍了如何通过调整代码逻辑,优化数据库查询与文件操作,特别是针对在线用户信息的更新机制。通过在更新逻辑中加入特定条件判断,避免不必要的频繁调用,有效减轻了数据库压力,提高了系统性能。

数据库部分:

1)dnt_getattachmentlistbypid (效果明显)

2)dnt_getindexforumlist (不太明显)

3)dnt_getpostlist1 (不太明显)

4)dnt_deleteonlineusers (效果明显)

5)dnt_updateuseronlinestates (效果明显)

6)dnt_gettoptopiclist (效果明显)

文件部分:

修改 BasePage .cs

 更新在线用户信息的时候添加这个条件,

if (pagename.IndexOf("avatar.aspx", StringComparison.OrdinalIgnoreCase) == -1)

变成

 // gezi 添加,/tools/avatar.aspx 是取头像的页面,这个页面不需要记录

            if (pagename.IndexOf("avatar.aspx", StringComparison.OrdinalIgnoreCase) == -1)

            {

                //当为forumlist.aspx或forumindex.aspx,可能出现在线并发问题,这时系统会延时2秒

                if ((pagename != "forumlist.aspx") && (pagename != "forumindex.aspx"))

                    oluserinfo = OnlineUsers.UpdateInfo(config.Passwordkey, config.Onlinetimeout);

                else

                {

                    try

                    {

                        oluserinfo = OnlineUsers.UpdateInfo(config.Passwordkey, config.Onlinetimeout);

                    }

                    catch

                    {

                        System.Threading.Thread.Sleep(2000);

                        oluserinfo = OnlineUsers.UpdateInfo(config.Passwordkey, config.Onlinetimeout);

                    }

                }

            } 

该条件表示:如果包含文件 avator.aspx (取用户头像) 则不更新用户在线信息,使 exec dnt_getonlineuser @userid , @password 的调用不再那么频繁(修改之前每次访问showtopic.aspx,每一条回复都会遍历更新所有用户的在线信息,如果有20个回复,就会遍历20次,现在只需要一次,大大减轻了因此造成的数据库的压力)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值