Below you will find pages that utilize the taxonomy term “帖子列表”
Posts
Discuz!顶置贴、帖子列表优化建议
顶置贴的存储 表 pre_forum_thread 字段 displayorder
4 多版块顶置。Disczu!7.2引入的一个特性,操作入口在“论坛”-“版块/群组顶置” 3 3级置顶、全局顶置 2 2级置顶、分区顶置 1 1级置顶、版块顶置 0 正常 -1 回收站 -2 审核中 -3 审核忽略 -4 草稿 顶置2、3类的tid会被保存在pre_common_syscache的cname=“globalstick"记录中 顶置2 $_G['cache']['globalstick']['categories'][分区ID] 顶置3 $_G[‘cache’][‘globalstick’][‘global’][’tids’] 多版块顶置数据(4)被保存在pre_common_syscache的cname=“forumstick"记录中 $_G[‘cache’][‘forumstick’][版块ID] 帖子列表页对顶置贴的显示逻辑。 Discuz!通过下面的SQL查询检索上面3种置顶帖子数据。
第一页
SELECT * FROM pre_forum_thread WHERE `tid` IN('3','13','12','5') AND `displayorder` IN('2','3','4') ORDER BY displayorder DESC, lastpost DESC LIMIT 20 Using where; Using filesort 第二页
SELECT * FROM pre_forum_thread WHERE `tid` IN('3','13','12','5') AND `displayorder` IN('2','3','4') ORDER BY displayorder DESC, lastpost DESC LIMIT 20, 20 Using where; Using filesort 可以看到,即使第二页没有需要显示的顶置贴,但仍然会执行查询,这里可以做个小小的优化,计算一下IN()表达式中的tid的数量。 然后是排序部分,如果条件允许的话,建议通过PHP脚本来排序。是否使用这一项优化,主要受版块中顶置贴的数量影响。如果顶置贴数量较多,必须要通过分页来显示,就需要在数据库中排序后,才能确定在指定页面要显示的顶置贴是哪些。不过按通常的情况来看,版块中顶置贴的数量都还是比较少,很少会出现顶置贴翻页的情况。