perf: make unread faster if there are 60k+ unread topics

fixes https://community.nodebb.org/topic/18350/nodebb-slow-after-website-have-over-60k-topic
This commit is contained in:
Barış Soner Uşaklı
2024-10-11 12:06:19 -04:00
parent d63a8cca60
commit f53f1394bd

View File

@@ -198,7 +198,7 @@ module.exports = function (Topics) {
}
const cids = params.cid || await getWatchedTrackedCids(params.uid);
const keys = cids.map(cid => `cid:${cid}:tids:lastposttime`);
return await db.getSortedSetRevRangeByScoreWithScores(keys, 0, -1, '+inf', params.cutoff);
return await db.getSortedSetRevRangeByScoreWithScores(keys, 0, 200, '+inf', params.cutoff);
}
async function getWatchedTrackedCids(uid) {
@@ -217,7 +217,7 @@ module.exports = function (Topics) {
params.cid.map(cid => `cid:${cid}:tids:lastposttime`) :
'topics:recent';
const recentTopicData = await db.getSortedSetRevRangeByScoreWithScores(keys, 0, -1, '+inf', params.cutoff);
const recentTopicData = await db.getSortedSetRevRangeByScoreWithScores(keys, 0, 200, '+inf', params.cutoff);
const isFollowed = await db.isSortedSetMembers(`uid:${params.uid}:followed_tids`, recentTopicData.map(t => t.tid));
return recentTopicData.filter((t, i) => isFollowed[i]);
}