用途:在优化 GraphQL API 性能时使用,通过查询复杂度分析、批处理、缓存策略、深度限制、监控与数据库优化等手段,构建高效、可扩展的接口。
主要能力:
- 查询复杂度分析:用指令或函数计算字段成本并设上限,超限抛出 QUERY_TOO_COMPLEX。
- 深度限制:通过验证规则限制嵌套深度(如 depthLimit(7)),超限报 DEPTH_LIMIT_EXCEEDED。
- 查询成本与限流:按对象/标量成本计算并做基于成本的限流(RATE_LIMIT_EXCEEDED)。
- DataLoader 批处理:合并请求、设置 maxBatchSize 与 batchScheduleFn,支持多键加载和 LRU 自定义缓存。
- 响应缓存:字段级 cacheControl、Redis 缓存,以及配合 APQ 的 CDN 缓存。
- 持久化查询与 APQ:用 sha256Hash 减少负载并支持白名单(FORBIDDEN)。
- 数据库优化:按 info 参数选择性加载字段、条件 join 与索引建议。
- 监控与追踪:计时插件、解析器计时、指标上报与 OpenTelemetry 分布式追踪。
使用方式:技能多为代码片段,需结合 Apollo Server 等实现按需接入,如 validationRules 中加入 depthLimit,或在 plugins 中注册复杂度、成本、计时与追踪插件;DataLoader 需配置批处理与缓存参数。
适用场景:GraphQL 服务性能调优、防止昂贵查询、降低数据库压力与提升缓存命中率。
限制:资料以代码示例为主,未提供具体安装命令、版本要求、部署配置与性能基准,实际效果需在目标环境中验证。