mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 16:46:12 +01:00
feat: cache stats, mongo count sucks
This commit is contained in:
@@ -108,6 +108,12 @@ dashboardController.getAnalytics = async (req, res, next) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
async function getStats() {
|
async function getStats() {
|
||||||
|
const cache = require('../../cache');
|
||||||
|
const cachedStats = cache.get('admin:stats');
|
||||||
|
if (cachedStats !== undefined) {
|
||||||
|
return cachedStats;
|
||||||
|
}
|
||||||
|
|
||||||
const results = await Promise.all([
|
const results = await Promise.all([
|
||||||
getStatsForSet('ip:recent', 'uniqueIPCount'),
|
getStatsForSet('ip:recent', 'uniqueIPCount'),
|
||||||
getStatsForSet('users:joindate', 'userCount'),
|
getStatsForSet('users:joindate', 'userCount'),
|
||||||
@@ -118,6 +124,7 @@ async function getStats() {
|
|||||||
results[1].name = '[[admin/general/dashboard:users]]';
|
results[1].name = '[[admin/general/dashboard:users]]';
|
||||||
results[2].name = '[[admin/general/dashboard:posts]]';
|
results[2].name = '[[admin/general/dashboard:posts]]';
|
||||||
results[3].name = '[[admin/general/dashboard:topics]]';
|
results[3].name = '[[admin/general/dashboard:topics]]';
|
||||||
|
cache.set('admin:stats', results, 600000);
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -138,6 +145,7 @@ async function getStatsForSet(set, field) {
|
|||||||
thismonth: db.sortedSetCount(set, now - terms.month, '+inf'),
|
thismonth: db.sortedSetCount(set, now - terms.month, '+inf'),
|
||||||
alltime: getGlobalField(field),
|
alltime: getGlobalField(field),
|
||||||
});
|
});
|
||||||
|
|
||||||
function textClass(num) {
|
function textClass(num) {
|
||||||
if (num > 0) {
|
if (num > 0) {
|
||||||
return 'text-success';
|
return 'text-success';
|
||||||
|
|||||||
Reference in New Issue
Block a user