mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-12-20 15:30:39 +01:00
fix: #8884, remove header/footer cache
This commit is contained in:
@@ -10,19 +10,10 @@ const translator = require('../translator');
|
||||
const widgets = require('../widgets');
|
||||
const utils = require('../utils');
|
||||
const slugify = require('../slugify');
|
||||
const cacheCreate = require('../cacheCreate');
|
||||
const cache = cacheCreate({
|
||||
name: 'header-footer',
|
||||
max: 1000,
|
||||
maxAge: 0,
|
||||
enabled: global.env === 'production',
|
||||
});
|
||||
|
||||
const relative_path = nconf.get('relative_path');
|
||||
|
||||
module.exports = function (middleware) {
|
||||
middleware.headerFooterCache = cache;
|
||||
|
||||
middleware.processRender = function processRender(req, res, next) {
|
||||
// res.render post-processing, modified from here: https://gist.github.com/mrlannigan/5051687
|
||||
const render = res.render;
|
||||
@@ -104,34 +95,14 @@ module.exports = function (middleware) {
|
||||
|
||||
async function renderHeaderFooter(method, req, res, options) {
|
||||
let str = '';
|
||||
const lang = getLang(req, res);
|
||||
function getCacheKey() {
|
||||
return [lang, method]
|
||||
.concat(req.path.split('/').slice(0, 4))
|
||||
.join('/');
|
||||
if (res.locals.renderHeader) {
|
||||
str = await middleware[method](req, res, options);
|
||||
} else if (res.locals.renderAdminHeader) {
|
||||
str = await middleware.admin[method](req, res, options);
|
||||
} else {
|
||||
str = '';
|
||||
}
|
||||
let cacheKey;
|
||||
if (req.uid === 0 && res.locals.renderHeader) {
|
||||
cacheKey = getCacheKey();
|
||||
str = cache.get(cacheKey);
|
||||
if (str) {
|
||||
return str;
|
||||
}
|
||||
}
|
||||
if (!str) {
|
||||
if (res.locals.renderHeader) {
|
||||
str = await middleware[method](req, res, options);
|
||||
} else if (res.locals.renderAdminHeader) {
|
||||
str = await middleware.admin[method](req, res, options);
|
||||
} else {
|
||||
str = '';
|
||||
}
|
||||
}
|
||||
const translated = await translate(str, lang);
|
||||
if (req.uid === 0 && res.locals.renderHeader) {
|
||||
cache.set(cacheKey, translated, 300000);
|
||||
}
|
||||
return translated;
|
||||
return await translate(str, getLang(req, res));
|
||||
}
|
||||
|
||||
function getLang(req, res) {
|
||||
|
||||
Reference in New Issue
Block a user