优化您的 Shopify Flow 工作流程

构建工作流程时,您需要确保它尽可能高效地运行。本文档概述了可能导致您的工作流程受限或超出 API 限制的场景,并提供了解决或规避这些问题的技巧。

常见的性能问题

本部分概述了可能导致您的工作流程出现性能问题的常见场景。可能会同时出现多个场景,这会增加您遇到性能问题的可能性。对于与编辑器配置或速率限制相关的错误,请使用问题排查指南

高频触发器

高频触发器是指其基础事件频繁发生的触发器。例如,对于商店中的每次库存更改,产品多属性库存数量已更改 触发器都会运行。触发器的流量会对您工作流程中的任何问题起到倍增作用。例如,如果某个工作流程获取 100 个产品,并且每分钟运行 1000 次,那么它每分钟将获取 100,000 个产品。这可能会导致性能问题。

解决方案:通过使用更少的数据来优化您的工作流程,或使用等待步骤来拆分您的工作流程

使用相同触发器的多个工作流程

在 Flow 中,您可以使用相同的触发器构建多个工作流程。当事件发生时,这些工作流程将彼此并行运行。如果您使用相同的触发器运行过多的工作流程,则可能会因以下原因而出现问题:

  • 工作流程可能会相互冲突。
  • 工作流程会同时尝试获取数据和调用 API,而您的商店一次可以处理的请求数量受到 Shopify API 限制 的制约。

解决方案:将使用相同触发器的工作流程合并到单个工作流程中。这还使您能够控制每个工作流程的执行时间,以免它们相互冲突。如果工作流程不检索大量数据或检索的数据相同,则合并工作流程会特别有用。如果工作流程检索大量不同的数据,那么您可能会发现将它们分开可获得更好的性能。

使用列表或错误的数据

构建工作流程时,您可能会使用对象列表,例如产品或订单列表。如果您使用对象列表,Flow 将获取列表中的所有对象。当列表包含大量数据时,这可能会成为一个问题。

另一个常见问题是意外选择了错误的数据。例如,若要检查订单上的产品数据,您可能选择了 order / publication / products / tags,而不是 order / line items / product / tags。第一个结果通常不正确,因为它会获取某个发布渠道的所有产品,而您的意图是检查订单上的产品。选择如此大的列表可能会导致性能问题,而选择错误的列表可能会导致您的自动化操作执行错误。

解决方案:仔细选择您需要的数据,并在不需要时避免使用列表。测试您的工作流程,以确保它们按预期运行。

元字段

获取单个元字段或元对象数据不应导致性能问题。但是,一个常见问题是选择 metafields 列表并循环访问资源上的所有元字段。如果 value 字段包含大量数据(例如,在使用 HTML 对象时),则这可能会导致处理大量数据并可能导致性能问题。

解决方案:使用 metafield 对象,而不是 metafields

过度使用“获取数据”操作

使用获取数据操作(例如 获取订单数据)的工作流程设计为从获取数据操作中为每个工作流程最多返回 100 个对象。超过 100 个对象可能会导致性能问题。

解决方案:更频繁地运行工作流程,使您的查询无需返回超过 100 个结果。重复使用相同的获取数据操作,而不是进行重复查询。

“获取数据”操作中没有查询筛选条件

获取数据操作会调用 Shopify API。如果不存在任何查询,则 API 将返回所有资源或不返回任何资源。这可能会导致性能问题,而且当您在工作流程的后续步骤中使用返回的数据时,还可能导致在您的商店中执行错误的操作。

解决方案:始终在您的获取数据操作中包含查询筛选条件。

“获取数据”操作中的查询筛选条件不正确

获取数据查询支持一组有限的查询筛选条件、特定语法以及一组可在筛选条件中使用的特定值。输入错误的筛选条件、筛选值或语法可能会导致整个查询被忽略,这可能会导致与不存在查询筛选条件时类似的问题。

解决方案:使用 Flow 中操作提供的文档来查找可用查询筛选条件的列表。始终测试您的查询筛选条件以确保它们返回预期的数据。您可以在 Flow 中使用“记录输出”操作来查看返回的数据,也可以通过 Postman 等 API 客户端或通过 GraphiQL 应用直接调用 Shopify Admin API。

针对常见性能问题的其他解决方案

使用“等待”步骤延迟数据获取

“等待”步骤可用于将工作流程暂停指定的时间,但“等待”步骤也可用于优化您的工作流程。每个“等待”步骤都会有效地将您的工作流程执行拆分为不同的阶段。工作流程运行时,它会自动获取第一个“等待”步骤之前所需的数据(并在“等待”步骤之后为工作流程的其余部分再次获取数据)。

如果工作流程使用高频触发器并获取大量数据,但仅偶尔执行操作,那么您可以将任何复杂的数据或逻辑放在“条件”和“等待”步骤对之后。例如:

  1. 触发器:“产品多属性库存数量已更改”。
  2. 条件:检查产品是否在产品系列中。
  3. 如果为 true,操作:等待 2 秒。
  4. 操作:向客户发送电子邮件(包含大量数据)。

在此示例中,第 4 步所需的数据仅在“等待”步骤完成后才会被查询。如果该条件通常为 false,则这意味着工作流程将运行得更快、更高效。

无需优化的内容

在多个操作中使用相同的数据

在多个步骤中使用相同的字段时,Flow 会分析这些字段的用法,并且仅获取一次该数据。这意味着您可以根据需要多次使用该数据,而无需担心性能问题。