From 5607c2fe37f69d098d8083539df0a45df8837889 Mon Sep 17 00:00:00 2001 From: Shinigami92 Date: Sun, 11 Dec 2022 01:04:37 +0100 Subject: [PATCH] update lastUsed --- server/api/og-image.ts | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/server/api/og-image.ts b/server/api/og-image.ts index 4c194509..6b97f4fb 100644 --- a/server/api/og-image.ts +++ b/server/api/og-image.ts @@ -21,13 +21,18 @@ export default defineEventHandler(async (event) => { const { url } = inMemoryCache.get(cardUrl)! await send(event, url) - // Remove oldest entry if cache is too big + inMemoryCache.set(cardUrl, { url, lastUsed: Date.now() }) + + // Remove some oldest entries if cache gets to big if (inMemoryCache.size > 5000) { - const oldestEntry = [...inMemoryCache.entries()].reduce( - (acc, [key, { lastUsed }]) => (lastUsed < acc.lastUsed ? { key, lastUsed } : acc), - { key: '', lastUsed: Infinity }, + // Remove 10% of the oldest entries + const entries = Array.from(inMemoryCache.entries()).sort( + (a, b) => a[1].lastUsed - b[1].lastUsed, ) - inMemoryCache.delete(oldestEntry.key) + const entriesToRemove = Math.floor(entries.length * 0.1) + + for (let i = 0; i < entriesToRemove; i++) + inMemoryCache.delete(entries[i][0]) } return