BuidlZone-Labs/zicket-web

Unbounded In-Memory Cache Class Lacks Eviction & Serverless Persistence

オープン

#177 opened on 2026/07/29

 (13 件のコメント) (0 件のリアクション) (1 人の担当者)TypeScript (43 件のフォーク)auto 404
Stellar Wavedifficulty: mediumenhancementhelp wantedperformance

Repository metrics

Stars
 (4 個のスター)
PR merge metrics
 (PR metrics pending)

説明

Category

Performance

Priority

Medium

Description

lib/cache.ts provides InMemoryCache using a static JS Map. In long-running node processes, key entries accumulate indefinitely without an LRU maximum capacity cap. In serverless deployment environments (Vercel Edge/Lambdas), static Map state is lost between cold starts and isolated per instance.

Evidence from lib/cache.ts#L18-L20:

class InMemoryCache {
  private static store = new Map<string, CacheEntry<unknown>>();
}

Proposed Solution

  1. Add an upper bound on key size and implement LRU (Least Recently Used) cache eviction.
  2. For production deployments, integrate Redis / Upstash or Next.js unstable_cache / fetch cache.

Acceptance Criteria

  • Cache map respects a configurable max capacity (e.g. 500 items).
  • Expired or old items are evicted automatically.
  • No unbounded memory growth.

Files

  • lib/cache.ts
  • lib/dataFetching.ts

コントリビューターガイド