用途:该技能面向 Effect(TypeScript)中的请求批处理与缓存,帮助将多个分散请求合并为一次 API 调用,并通过缓存避免重复请求、去重并发请求,以缓解 N+1 查询问题。
主要能力:
- 批处理:通过 Request.tagged 定义请求类型,用 RequestResolver.makeBatched 创建批处理器,在单次批量调用中处理多个请求并逐一完成结果;也支持不批处理的 fromEffect 解析器、带上下文的解析器(provideContext)。
- 缓存:Effect.cached 记忆化 Effect 结果;Effect.cachedWithTTL 按时间过期;Effect.cachedInvalidateWithTTL 支持手动失效;Cache.make 提供 capacity、timeToLive、lookup、get、contains、invalidate、cacheStats 等控制。
- 请求缓存与去重:Request 在查询上下文中自动缓存并去重;可用 Effect.withRequestCaching(false) 关闭,用 Request.makeCache 配置自定义缓存(capacity、timeToLive),通过 Effect.withRequestCache 应用。
使用方式:定义请求类型与带标签构造器,创建解析器,用 Effect.request 定义查询函数,然后在 Effect.forEach 等中并发调用即可自动批处理。关闭批处理可用 Effect.withRequestBatching(false)。
适用场景:数据库或 API 的 N+1 场景、需要批量取数的后端服务,以及需要缓存昂贵计算并设置合适 TTL 的场合。
限制:资料未提供具体安装命令、版本要求、收费信息或性能数据;示例中的错误处理与整体程序片段不完整,需结合 Effect 文档补全。更多细节可参考 ${CLAUDE_PLUGIN_ROOT}/references/llms-full.txt 中的 Batching、Caching、Cache 等章节。