Shopify 服務中斷

Storefront 發生問題。

如需詳細資訊,請查看 Shopify 狀態 頁面。

優化您的 Shopify Flow 工作流程

建立工作流程時,您會希望它盡可能有效率地執行。本文說明哪些情況可能導致工作流程遭到節流或用盡 API 限制,並提供解決或變通方式。

常見效能問題

本節說明可能導致工作流程出現效能問題的常見情境。這些情境可能同時發生,進一步提高您遇到效能問題的機率。若遇到與編輯器設定或速率限制相關的錯誤,請參考 疑難排解指南

高頻觸發條件

高頻觸發條件指的是其背後事件經常發生的觸發條件。舉例來說,Product variant inventory quantity changed 這個觸發條件會在商店每次庫存變動時執行。觸發次數會把工作流程中的任何問題放大。比方說,若某個工作流程每次要擷取 100 項商品,且每分鐘執行 1,000 次,那每分鐘就會擷取 100,000 項商品,這可能造成效能問題。

解決方法:減少使用的資料量來優化工作流程,或使用 wait steps to partition your workflow

多個工作流程使用相同觸發條件

在 Flow 中,您可以建立多個使用相同觸發條件的工作流程。當事件發生時,這些工作流程會彼此並行執行。若對相同觸發條件啟動過多工作流程,可能會因以下原因產生問題:

  • 這些工作流程可能彼此衝突。
  • 這些工作流程會同時嘗試擷取資料與呼叫 API,而您的商店同一時間可處理的請求數量,會受 Shopify API limits 限制。

解決方法:將使用相同觸發條件的工作流程合併為單一工作流程。這也讓您能控管各個流程的執行時機,避免彼此衝突。若各工作流程擷取的資料量不大,或擷取的是相同資料,合併特別有幫助。若各流程需要擷取大量彼此不同的資料,維持分開反而可能有較佳效能。

使用清單或使用錯誤的資料

建立工作流程時,您可能會使用物件清單,例如商品或訂單。若使用物件清單,Flow 會擷取清單中的所有物件。當清單包含大量資料時,這會造成問題。

另一個常見問題是誤選資料。舉例而言,若要檢查訂單中的商品資料,您可能誤選了 order / publication / products / tags,而不是 order / line items / product / tags。前者通常不正確,因為它會擷取某個 publication 的所有商品,而非僅檢查該訂單上的商品。選擇這麼大的清單會造成效能問題,而選錯清單則可能讓您的自動化執行錯誤的動作。

解決方法:謹慎選擇所需資料,非必要時避免使用清單。請測試您的工作流程,確保其行為符合預期。

中繼欄位

擷取個別中繼欄位或 metaobject 資料通常不會造成效能問題。不過,常見錯誤是選擇 metafields 清單,並對資源上的所有中繼欄位進行迴圈。若 value 欄位包含大量資料,例如使用 HTML 物件時,就會需要處理大量資料,可能造成效能問題。

解決方法:改用 metafield object,而非 metafields

過度使用「取得資料」動作

使用 取得資料 動作(例如 Get order data)的工作流程,設計上每個 取得資料 動作最多回傳 100 個物件。超過 100 個物件可能造成效能問題。

解決方法:更頻繁地執行工作流程,讓查詢不必回傳超過 100 筆結果。重複使用相同的 取得資料 動作,而非重複送出查詢。

「取得資料」動作未設定查詢篩選條件

取得資料 動作會呼叫 Shopify API。若未提供查詢,API 可能會回傳所有資源或完全不回傳。這不僅會造成效能問題,還可能導致您在後續步驟使用這些資料時,於商店執行錯誤的動作。

解決方法:在 取得資料 動作中一律加入查詢篩選條件。

「取得資料」動作中的查詢篩選條件不正確

取得資料 查詢僅支援有限的篩選條件、特定語法,以及可用於篩選的特定值。若輸入了錯誤的篩選條件、值或語法,整個查詢可能會被忽略,造成與 未提供任何查詢篩選條件 時類似的問題。

解決方法:使用 Flow 中該動作提供的說明文件,查看可用的查詢篩選條件清單。請務必測試您的查詢篩選條件,確保回傳的資料符合預期。您可以在 Flow 中使用 Log Output action 檢視回傳資料,或透過像 Postman 這類的 API 用戶端直接呼叫 Shopify Admin API,或改用 app GraphiQL

其他常見效能問題的解決方案

使用 Wait 步驟延後資料擷取

Wait steps 可讓您將工作流程暫停指定時間,同時也能用來優化工作流程。每個 Wait 步驟都會把工作流程的執行切分為多個階段。當工作流程執行時,系統會自動擷取到第一個 Wait 步驟為止所需的資料(在 Wait 步驟之後,系統會再為其餘的工作流程擷取資料)。

如果某個工作流程使用高頻觸發條件且會擷取大量資料,但僅偶爾需要執行動作,您可以把較複雜的資料或邏輯放在「條件 + Wait」這一組之後。例如:

  1. 觸發條件:Product variant inventory quantity changed。
  2. 條件:檢查該商品是否在某個商品系列中。
  3. 若為真,動作:Wait 2 秒。
  4. 動作:寄送電子郵件給顧客(包含大量資料)。

在此範例中,只有在 Wait 步驟完成後,才會查詢第 4 步所需的資料。若該條件通常為否,工作流程就能執行得更快、更有效率。

不必優化的情況

在多個動作中使用相同的資料

當您在多個步驟中使用相同欄位時,Flow 會分析這些欄位的使用情況,並且只會擷取一次該資料。這代表您可以多次使用相同資料,而不必擔心效能。