每日整理真实提问 356 个问题 · 726 个回答 需要系统性的技术文档?看 Shopify 技术百科 1000 篇 → 400-873-8117
待解决 提问于 2 个月前

GraphQL 报 MAX_COST_EXCEEDED,查询本身不大

2 个回答 1,078 次浏览 Admin API 与 GraphQL 最后活跃 2 个月前
82

一个商品列表查询正常能跑,加了 variants 和 metafields 之后开始报 MAX_COST_EXCEEDED,但字段看起来不多。

陈
陈工提问者
Shopify 认证开发者 · 专注主题与 Liquid
2 个月前提问 · 已收到 2 个回答

2 个回答

最高票回答 · 等待提问者确认
42

先把判断放在前面:GraphQL 按「请求成本」限流,不是按次数;单次查询成本上限 1000 点,嵌套连接会按倍数相乘。

1处理顺序

  1. 用 extensions.cost 看这次查询实际消耗了多少点,先量化再优化。
  2. 把 first: 250 降到 50,成本通常按比例下降。
  3. 拆查询:主查询取商品基本信息,变体与 metafield 用单独请求按需拉。
  4. 用 @include 或变量控制可选字段,避免每次都拉全量字段。
  5. 批量场景改用 Bulk Operations,异步导出不受单次成本限制。
验收:查询返回 200 且 cost.throttleStatus.currentlyAvailable 保持在合理水位。
风 风格技术团队 回答于 2 个月前
17

很多人以为 first: 250 就是 250 条,其实成本还包括每个节点里嵌套的字段。嵌套三层以内、每层不超过 50 是比较稳的写法。

泽 阿泽 · 前端工程师 · 2 个月前

你的处理方式是什么?

写下你实际验证过的步骤,比「我也有这个问题」有用得多。当前版本为静态展示,提交后会由团队整理并回复。

描述你遇到的现象、店铺环境(主题 / 套餐 / 应用)、已经试过哪些操作……
我要单独提问 工作日 10 分钟内回复,可直接加微信 fenggejishu