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次,现在只需要一次,大大减轻了因此造成的数据库的压力)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述