SuperAPI AI 工具集

epic-caching

数据与分析

查看项目

更新于 10-15 21:38

技能介绍

用途:该技能用于在 Epic Stack 中为昂贵查询、外部 API 响应和不常变动的数据添加缓存,并实现 stale-while-revalidate 与缓存失效管理。

主要能力:Epic Stack 提供两类缓存。SQLite 缓存长期存在,随 LiteFS 复制,适合不常变动的数据;LRU 缓存为内存短期缓存,重启即清空、不复制,适合请求去重和临时缓存。缓存通过 @epic-web/cachified 抽象管理,从 #app/utils/cache.server.ts 导入 cachified 与 cache。

使用方式:调用 cachified 时传入 key、cache、getFreshValue、checkValue、ttl 等参数。缓存键建议采用 entity:identifier:data 格式,如 user:${userId}:profile。TTL 以毫秒为单位,设为 null 表示永不过期。staleWhileRevalidate 用于在过期后先返回旧数据并后台刷新。checkValue 应使用 Zod 校验缓存数据,校验失败则重新获取。可传入 timings 并配合 combineServerTimings 集成 Server Timing。失效可通过 cache.delete 按 key 删除,或用 searchCacheKeys 批量查找删除。多区域下仅主实例写入缓存,必要时用 ensurePrimary()。管理后台位于 /admin/cache,可查看、搜索、删除键或清空缓存。

适用场景:缓存外部 API 调用、Prisma 聚合查询、用户资料与统计等。

限制:不应缓存频繁变动的数据、已足够快的简单查询、仅获取一次的数据或敏感数据(密码、令牌、个人敏感信息)。避免过长 TTL(超过一周)和过度缓存。缓存可能失败,需处理错误;变更后需主动失效缓存。资料未提供具体安装命令与收费信息。