From 9355f53ee54dcd783215797a2a4ec8846e0942b4 Mon Sep 17 00:00:00 2001 From: Liam Date: Wed, 16 Oct 2024 02:31:10 +0100 Subject: [PATCH] add og image caching --- bun.lockb | Bin 319104 -> 319136 bytes projects/backend/package.json | 1 + .../backend/src/service/image.service.tsx | 26 ++++++++++++++++-- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/bun.lockb b/bun.lockb index 3b1debe2a85f75eba831c53f1534f93203fdbedc..efceee9ddeec59fefacc7e9b7b202e0068d16b79 100755 GIT binary patch delta 1745 zcmeH{%S%*I9LMjuXU6Gj4?|>AHMT@oO92e`JHcFe?mup zLd!NgexyFPH&<-;QXt#aNAdgm*KS zSDW%oDp5a%x*K}Z^v$TMX}R#$qRTpkHg0>`XpLD$Wxf{5?ao5EeS@h}dHTyHrt-8` zO*~z>?z+iO)7r@eK~tDbxpAv`z)jOXo3iDO>7()h_l$O$d}qwo=!qYg1eI^x1$Cf3 zChj%$nUwuc*ssP@L~05m>!oR@vOHj7s#NQJ!kf&tL6fGkZ3xQOe5bQwMO)(B1pPBf za}$Ko_}>X?DDVkg;ImhSR!&XT8;lmGEDlT=$Dqm0N3K{u9JjmOVuvc0@}l}KWsZ2O zvRraSSvLlgcZT=pKHz=21#W|O&;e);=fHVD!>9*m03US}&e4;3;?po`XKn4_*LXP})!mik1=+KlXsOv}oL{lHu6(#jUk`}U`5!e?7b)Jv~^KP(T#Ih~>CwqMo8 zkldsjL-@0tC6Q<{TYm`4{0ZlH*fsg=7L^%xKg1aD(!Q2yYo9dx%W<#FpDVS@Y8ErJzKC^9~ zmdX-kDofmT>Cy>w7F%i@KkT#w_%kXdtZyECRp#NeJLu~pBCTqt{wlKFe}lCHy3CVR zTX{=(bM67&q?_OtxD9#%$HE105pYyAfo8x@odOlQ-IHZz$dgY>MY=O4>o>iC|0Q?@ zczGTH10I7>@B};sV}O^CqoxJ4g3Ee3CQ1JwUJsd~xLkG1p5vWUqziDmTnC&!9e`7* z9n=BN*`ww|Aib)9!{i322b{CVL9Mxxki)LelWWjF=F1A7v$NV1E|C4o9ZBhru9TRr zg;G^$rq;^13cjS+n~t+lPo!jx$)sekFV0iPqX#BsxnA8Ni%e!xY7&XobT;{2D7q)~ zmg>f|l$!f#*`|W2FdIvn@1gAb8B~Pc?@j7-dFX8kMy$C*cZc3&a3;z|+jM>8ZO(gd L%}k_6Bk%JsflcK7 diff --git a/projects/backend/package.json b/projects/backend/package.json index 8f1a9d2..a051333 100644 --- a/projects/backend/package.json +++ b/projects/backend/package.json @@ -22,6 +22,7 @@ "elysia-rate-limit": "^4.1.0", "ky": "^1.7.2", "mongoose": "^8.7.0", + "node-cache": "^5.1.2", "react": "^18.3.1" }, "devDependencies": { diff --git a/projects/backend/src/service/image.service.tsx b/projects/backend/src/service/image.service.tsx index 58b75d2..281b8c3 100644 --- a/projects/backend/src/service/image.service.tsx +++ b/projects/backend/src/service/image.service.tsx @@ -3,6 +3,12 @@ import { scoresaberService } from "@ssr/common/service/impl/scoresaber"; import React from "react"; import { formatNumberWithCommas, formatPp } from "@ssr/common/utils/number-utils"; import { getDifficultyFromScoreSaberDifficulty } from "website/src/common/scoresaber-utils"; +import NodeCache from "node-cache"; + +const imageCache = new NodeCache({ + stdTTL: 60 * 60, // 1 hour + checkperiod: 120, +}); export class ImageService { /** @@ -11,11 +17,16 @@ export class ImageService { * @param id the player's id */ public static async generatePlayerImage(id: string) { + const cacheKey = `player-${id}`; + if (imageCache.has(cacheKey)) { + return imageCache.get(cacheKey) as ImageResponse; + } + const player = await scoresaberService.lookupPlayer(id); if (player == undefined) { return undefined; } - return new ImageResponse( + const imageResponse = new ImageResponse( (
0; - - return new ImageResponse( + const imageResponse = new ImageResponse( (