Optimierung deiner Shopify Flow-Workflows
Wenn du einen Workflow erstellst, möchtest du sicherstellen, dass er so effizient wie möglich ausgeführt wird. Dieses Dokument beschreibt Szenarien, die dazu führen können, dass deine Workflows gedrosselt werden oder API-Limits ausgeschöpft werden. Außerdem erhältst du Tipps, wie du diese Probleme beheben oder eine Zwischenlösung anwenden kannst.
Auf dieser Seite
Häufige Leistungsprobleme
Dieser Abschnitt beschreibt häufige Szenarien, die Leistungsprobleme in deinen Workflows verursachen können. Es ist möglich, dass mehrere Szenarien gleichzeitig auftreten, was die Wahrscheinlichkeit von Leistungsproblemen erhöht. Bei Fehlern im Zusammenhang mit der Editor-Konfiguration oder der Ratenbegrenzung verwende die Anleitung zur Fehlerbehebung.
Trigger mit hohem Volumen
Trigger mit hohem Volumen sind solche, bei denen das zugrunde liegende Ereignis häufig auftritt. Beispielsweise wird der Trigger Inventarmenge der Produktvariante geändert bei jeder Inventaränderung in einem Shop ausgeführt. Das Volumen eines Triggers wirkt wie ein Multiplikator für jedes Problem in deinem Workflow. Wenn ein Workflow beispielsweise 100 Produkte abruft und 1.000 Mal pro Minute ausgeführt wird, ruft er 100.000 Produkte pro Minute ab. Dies kann zu Leistungsproblemen führen.
Lösung: Optimiere deine Workflows, indem du weniger Daten verwendest, oder nutze Warte-Schritte, um deinen Workflow aufzuteilen.
Mehrere Workflows, die denselben Trigger verwenden
In Flow kannst du mehrere Workflows erstellen, die denselben Trigger verwenden. Diese Workflows werden parallel zueinander ausgeführt, wenn das Ereignis eintritt. Dies kann problematisch sein, wenn du aus den folgenden Gründen zu viele Workflows mit demselben Trigger ausführst:
- Die Workflows können miteinander in Konflikt geraten.
- Die Workflows versuchen, gleichzeitig Daten abzurufen und APIs aufzurufen. Dein Shop ist dabei durch die Shopify-API-Limits in der Anzahl der Anfragen begrenzt, die er gleichzeitig verarbeiten kann.
Lösung: Fasse Workflows, die denselben Trigger verwenden, in einem einzigen Workflow zusammen. So kannst du auch steuern, wann jeder einzelne ausgeführt wird, damit sie nicht miteinander in Konflikt geraten. Das Zusammenfassen von Workflows ist besonders nützlich, wenn die Workflows nicht viele Daten abrufen oder die abgerufenen Daten identisch sind. Wenn die Workflows viele unterschiedliche Daten abrufen, stellst du möglicherweise fest, dass eine Trennung zu einer besseren Leistung führt.
Verwendung von Listen oder falschen Daten
Wenn du einen Workflow erstellst, verwendest du möglicherweise eine Liste von Objekten, z. B. Produkte oder Bestellungen. Wenn du eine Liste von Objekten verwendest, ruft Flow alle Objekte in der Liste ab. Dies kann ein Problem sein, wenn die Liste viele Daten enthält.
Ein weiteres häufiges Problem ist die versehentliche Auswahl der falschen Daten. Um beispielsweise Produktdaten für eine Bestellung zu überprüfen, hast du möglicherweise Bestellung / Publikation / Produkte / Tags anstelle von Bestellung / Positionen / Produkt / Tags ausgewählt. Das erste Ergebnis ist normalerweise falsch, da es alle Produkte für eine Publikation abruft, obwohl eigentlich die Produkte in der Bestellung überprüft werden sollen. Die Auswahl einer so großen Liste kann zu Leistungsproblemen führen und die Auswahl der falschen Liste kann dazu führen, dass deine Automatisierung nicht das Richtige tut.
Lösung: Wähle die benötigten Daten sorgfältig aus und vermeide die Verwendung von Listen, wenn du sie nicht benötigst. Teste deine Workflows, um sicherzustellen, dass sie das tun, was du erwartest.
Metafelder
Das Abrufen einzelner Metafeld- oder Metaobjekt-Daten sollte keine Leistungsprobleme verursachen. Ein häufiges Problem ist jedoch die Auswahl der Liste metafields und das Durchlaufen aller Metafelder einer Ressource. Wenn ein value-Feld viele Daten enthält, z. B. bei der Verwendung von HTML-Objekten, kann dies dazu führen, dass eine große Datenmenge verarbeitet wird, was möglicherweise Leistungsprobleme verursacht.
Lösung: Verwende das metafield-Objekt anstelle von metafields.
Übermäßige Verwendung von „Daten abrufen“-Aktionen
Workflows, die eine „Daten abrufen“-Aktion wie Bestelldaten abrufen verwenden, sind darauf ausgelegt, maximal 100 Objekte pro Workflow aus „Daten abrufen“-Aktionen zurückzugeben. Das Überschreiten von 100 Objekten kann zu Leistungsproblemen führen.
Lösung: Führe den Workflow häufiger aus, damit deine Abfrage nicht mehr als 100 Ergebnisse zurückgeben muss. Verwende dieselbe „Daten abrufen“-Aktion wieder, anstatt wiederholte Abfragen zu stellen.
Keine Abfragefilter in „Daten abrufen“-Aktionen
„Daten abrufen“-Aktionen rufen die Shopify API auf. Wenn keine Abfrage vorhanden ist, gibt die API entweder alle Ressourcen oder keine zurück. Dies kann zu Leistungsproblemen führen, aber es kann auch dazu führen, dass in deinem Shop falsche Aktionen ausgeführt werden, wenn du die zurückgegebenen Daten später im Workflow verwendest.
Lösung: Füge immer Abfragefilter in deine „Daten abrufen“-Aktionen ein.
Falsche Abfragefilter in „Daten abrufen“-Aktionen
„Daten abrufen“-Abfragen unterstützen einen begrenzten Satz von Abfragefiltern, eine spezifische Syntax und einen bestimmten Satz von Werten, die in Filtern verwendet werden können. Die Eingabe eines falschen Filters, Filterwerts oder einer falschen Syntax kann dazu führen, dass die gesamte Abfrage ignoriert wird, was zu ähnlichen Problemen führen kann wie beim Fehlen eines Abfragefilters.
Lösung: Verwende die von der Aktion in Flow bereitgestellte Dokumentation, um die Liste der verfügbaren Abfragefilter zu finden. Teste deine Abfragefilter immer, um sicherzustellen, dass sie die erwarteten Daten zurückgeben. Du kannst eine „Ausgabe protokollieren“-Aktion in Flow verwenden, um die zurückgegebenen Daten zu überprüfen, oder du kannst die Shopify Admin API direkt über einen API-Client wie Postman oder über die App GraphiQL aufrufen.
Zusätzliche Lösungen für häufige Leistungsprobleme
Warte-Schritte verwenden, um den Datenabruf zu verzögern
Warte-Schritte ermöglichen es dir, einen Workflow für eine bestimmte Zeit zu pausieren, aber Warte-Schritte können auch zur Optimierung deiner Workflows verwendet werden. Jeder Warte-Schritt teilt die Ausführung deines Workflows effektiv in separate Phasen auf. Wenn der Workflow ausgeführt wird, ruft er automatisch die Daten ab, die bis zum ersten Warte-Schritt benötigt werden (und ruft nach dem Warte-Schritt erneut Daten für den Rest des Workflows ab).
Wenn ein Workflow einen Trigger mit hohem Volumen verwendet und viele Daten abruft, aber nur gelegentlich eine Aktion ausführt, kannst du komplexe Daten oder Logik nach einem Bedingungs- und Warte-Schritt-Paar platzieren. Zum Beispiel:
- Trigger: Inventarmenge der Produktvariante geändert.
- Bedingung: Überprüfen, ob sich das Produkt in einer Kollektion befindet.
- Wenn wahr, Aktion: 2 Sekunden warten.
- Aktion: Eine E-Mail an die Kundschaft senden (mit vielen Daten).
In diesem Beispiel werden die für Schritt 4 erforderlichen Daten erst nach Abschluss des Warte-Schritts abgefragt. Wenn die Bedingung normalerweise falsch ist, bedeutet dies, dass der Workflow schneller und effizienter ausgeführt wird.
Was nicht optimiert werden sollte
Dieselben Daten in mehreren Aktionen verwenden
Wenn du dasselbe Feld in mehreren Schritten verwendest, analysiert Flow die Verwendung dieser Felder und ruft diese Daten nur einmal ab. Das bedeutet, dass du die Daten so oft verwenden kannst, wie du möchtest, ohne dir über die Leistung Gedanken machen zu müssen.