Je Shopify Flow-workflows optimaliseren
Wanneer je een workflow bouwt, wil je ervoor zorgen dat deze zo efficiënt mogelijk wordt uitgevoerd. In dit document worden scenario's beschreven die ertoe kunnen leiden dat je workflows worden 'throttled' of API-limieten overschrijden, en tips over hoe je die problemen kunt oplossen of omzeilen.
Op deze pagina
Veelvoorkomende prestatieproblemen
In dit gedeelte worden veelvoorkomende scenario's beschreven die prestatieproblemen in je workflows kunnen veroorzaken. Er kan meer dan één scenario tegelijk van toepassing zijn, wat de kans op prestatieproblemen vergroot. Gebruik de handleiding voor probleemoplossing voor fouten met betrekking tot de editorconfiguratie of rate limiting.
Triggers met een hoog volume
Triggers met een hoog volume zijn triggers waarvan de onderliggende gebeurtenis vaak plaatsvindt. De trigger Voorraadaantal productvariant gewijzigd wordt bijvoorbeeld uitgevoerd voor elke voorraadwijziging in een winkel. Het volume van een trigger fungeert als een vermenigvuldiger voor elk probleem in je workflow. Als een workflow bijvoorbeeld 100 producten ophaalt en 1000 keer per minuut wordt uitgevoerd, haalt deze 100.000 producten per minuut op. Dit kan prestatieproblemen veroorzaken.
Oplossing: optimaliseer je workflows door minder gegevens te gebruiken of gebruik wachtstappen om je workflow op te delen.
Meerdere workflows die dezelfde trigger gebruiken
In Flow kun je meer dan één workflow bouwen met dezelfde trigger. Deze workflows worden parallel aan elkaar uitgevoerd wanneer de gebeurtenis plaatsvindt. Dit kan problematisch zijn als je te veel workflows met dezelfde trigger uitvoert, om de volgende redenen:
- De workflows kunnen met elkaar in conflict komen.
- De workflows proberen tegelijkertijd gegevens op te halen en API's aan te roepen en je winkel is beperkt in het aantal aanvragen dat het tegelijk kan verwerken door Shopify API-limieten.
Oplossing: voeg workflows die dezelfde trigger gebruiken samen tot één workflow. Hiermee kun je ook bepalen wanneer elke workflow wordt uitgevoerd, zodat ze niet met elkaar in conflict komen. Het combineren van workflows is vooral handig als de workflows niet veel gegevens ophalen of als de gegevens die ze ophalen hetzelfde zijn. Als de workflows veel verschillende gegevens ophalen, kan het zijn dat de prestaties beter zijn als je ze gescheiden houdt.
Lijsten of de verkeerde gegevens gebruiken
Wanneer je een workflow bouwt, gebruik je mogelijk een lijst met objecten, zoals producten of bestellingen. Als je een lijst met objecten gebruikt, haalt Flow alle objecten in de lijst op. Dit kan een probleem zijn als de lijst veel gegevens bevat.
Een ander veelvoorkomend probleem is het per ongeluk selecteren van de verkeerde gegevens. Om bijvoorbeeld productgegevens van een bestelling te controleren, heb je mogelijk bestelling / publicatie / producten / tags geselecteerd in plaats van bestelling / orderregels / product / tags. Het eerste resultaat is meestal onjuist, omdat het alle producten voor een publicatie ophaalt terwijl het de bedoeling is om de producten in de bestelling te controleren. Het kiezen van zo'n grote lijst kan prestatieproblemen veroorzaken en het kiezen van de verkeerde lijst kan ertoe leiden dat je automatisering niet doet wat je wilt.
Oplossing: Selecteer zorgvuldig de gegevens die je nodig hebt en vermijd het gebruik van lijsten als dat niet nodig is. Test je workflows om er zeker van te zijn dat ze doen wat je verwacht.
Metavelden
Het ophalen van afzonderlijke metaveld- of metaobject-gegevens zou geen prestatieproblemen moeten veroorzaken. Een veelvoorkomend probleem is echter het kiezen van de lijst metavelden en het doorlopen van alle metavelden van een resource. Als een waarde-veld veel gegevens bevat, bijvoorbeeld wanneer HTML-objecten worden gebruikt, kan dit ertoe leiden dat er veel gegevens worden verwerkt, wat mogelijk prestatieproblemen veroorzaakt.
Oplossing: gebruik het metaveld-object in plaats van metavelden.
Overmatig gebruik van 'Gegevens ophalen'-acties
Workflows die een Gegevens ophalen-actie gebruiken, zoals Bestelgegevens ophalen, zijn ontworpen om maximaal 100 objecten per workflow te retourneren van Gegevens ophalen-acties. Als je meer dan 100 objecten ophaalt, kan dit prestatieproblemen veroorzaken.
Oplossing: voer de workflow vaker uit zodat je query niet meer dan 100 resultaten hoeft te retourneren. Hergebruik dezelfde Gegevens ophalen-actie in plaats van herhaalde query's uit te voeren.
Geen queryfilters in 'Gegevens ophalen'-acties
Gegevens ophalen-acties roepen de Shopify API aan. Als er geen query aanwezig is, retourneert de API alle resources of geen. Dit kan prestatieproblemen veroorzaken, maar het kan er ook voor zorgen dat de verkeerde acties in je winkel worden ondernomen wanneer je de geretourneerde gegevens later in de workflow gebruikt.
Oplossing: voeg altijd queryfilters toe aan je Gegevens ophalen-acties.
Onjuiste queryfilters in 'Gegevens ophalen'-acties
Gegevens ophalen-query's ondersteunen een beperkte set queryfilters, een specifieke syntaxis en een specifieke set waarden die in filters kunnen worden gebruikt. Het invoeren van het verkeerde filter, de verkeerde filterwaarde of syntaxis kan ertoe leiden dat de hele query wordt genegeerd, wat problemen kan veroorzaken die vergelijkbaar zijn met wanneer er geen queryfilter aanwezig is.
Oplossing: gebruik de documentatie die bij de actie in Flow wordt geleverd om de lijst met beschikbare queryfilters te vinden. Test je queryfilters altijd om er zeker van te zijn dat ze de verwachte gegevens retourneren. Je kunt een Log Output-actie in Flow gebruiken om de geretourneerde gegevens te bekijken, of je kunt de Shopify Admin API rechtstreeks aanroepen via een API-client zoals Postman of via de app GraphiQL.
Aanvullende oplossingen voor veelvoorkomende prestatieproblemen
Wachtstappen gebruiken om het ophalen van gegevens te vertragen
Met Wachtstappen kun je een workflow voor een bepaalde tijd pauzeren, maar wachtstappen kunnen ook worden gebruikt om je workflows te optimaliseren. Elke wachtstap splitst de uitvoering van je workflow effectief op in afzonderlijke fasen. Wanneer de workflow wordt uitgevoerd, haalt deze automatisch de gegevens op die nodig zijn tot de eerste wachtstap (en haalt na de wachtstap opnieuw gegevens op voor de rest van de workflow).
Als een workflow een trigger met een hoog volume gebruikt en veel gegevens ophaalt, maar slechts af en toe een actie uitvoert, kun je complexe gegevens of logica na een combinatie van een voorwaarde en een wachtstap plaatsen. Bijvoorbeeld:
- Trigger: voorraadaantal van productvariant gewijzigd.
- Voorwaarde: controleer of het product in een collectie staat.
- Indien waar, Actie: wacht 2 seconden.
- Actie: een e-mail naar de klant sturen (met veel gegevens).
In dit voorbeeld worden de gegevens die nodig zijn voor stap 4 pas opgevraagd nadat de wachtstap is voltooid. Als de voorwaarde meestal onwaar is, betekent dit dat de workflow sneller en efficiënter wordt uitgevoerd.
Wat je niet moet optimaliseren
Dezelfde gegevens in meerdere acties gebruiken
Wanneer je hetzelfde veld in meerdere stappen gebruikt, analyseert Flow het gebruik van die velden en haalt de gegevens maar één keer op. Dit betekent dat je de gegevens zo vaak kunt gebruiken als je wilt zonder je zorgen te hoeven maken over de prestaties.