perf(server): cache nodeinfo to reduce db query
This commit is contained in:
parent
6f2e93c6a1
commit
836ae732f6
|
@ -4,6 +4,7 @@ import { fetchMeta } from '@/misc/fetch-meta.js';
|
||||||
import { Users, Notes } from '@/models/index.js';
|
import { Users, Notes } from '@/models/index.js';
|
||||||
import { MoreThan } from 'typeorm';
|
import { MoreThan } from 'typeorm';
|
||||||
import { MAX_NOTE_TEXT_LENGTH } from '@/const.js';
|
import { MAX_NOTE_TEXT_LENGTH } from '@/const.js';
|
||||||
|
import { Cache } from '@/misc/cache';
|
||||||
|
|
||||||
const router = new Router();
|
const router = new Router();
|
||||||
|
|
||||||
|
@ -81,15 +82,17 @@ const nodeinfo2 = async () => {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const cache = new Cache<Awaited<ReturnType<typeof nodeinfo2>>>(1000 * 60 * 10);
|
||||||
|
|
||||||
router.get(nodeinfo2_1path, async ctx => {
|
router.get(nodeinfo2_1path, async ctx => {
|
||||||
const base = await nodeinfo2();
|
const base = await cache.fetch(null, () => nodeinfo2());
|
||||||
|
|
||||||
ctx.body = { version: '2.1', ...base };
|
ctx.body = { version: '2.1', ...base };
|
||||||
ctx.set('Cache-Control', 'public, max-age=600');
|
ctx.set('Cache-Control', 'public, max-age=600');
|
||||||
});
|
});
|
||||||
|
|
||||||
router.get(nodeinfo2_0path, async ctx => {
|
router.get(nodeinfo2_0path, async ctx => {
|
||||||
const base = await nodeinfo2();
|
const base = await cache.fetch(null, () => nodeinfo2());
|
||||||
|
|
||||||
delete base.software.repository;
|
delete base.software.repository;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue