Optimering av dina Shopify Flow-arbetsflöden
När du bygger ett arbetsflöde vill du se till att det körs så effektivt som möjligt. Det här dokumentet beskriver scenarier som kan leda till att dina arbetsflöden begränsas eller överskrider API-gränser och ger tips på hur du löser eller kringgår dessa problem.
På den här sidan
Vanliga prestandaproblem
Det här avsnittet beskriver vanliga scenarier som kan orsaka prestandaproblem i dina arbetsflöden. Det är möjligt att fler än ett scenario inträffar samtidigt, vilket ökar sannolikheten för att du upplever prestandaproblem. För fel som rör redigerarkonfiguration eller hastighetsbegränsning, använd felsökningsguiden.
Utlösare med hög volym
Utlösare med hög volym är sådana där den underliggande händelsen inträffar ofta. Till exempel körs utlösaren Produktvariants lagerkvantitet ändrad för varje lagerändring i en butik. Volymen för en utlösare fungerar som en multiplikator för alla problem i ditt arbetsflöde. Om ett arbetsflöde till exempel hämtar 100 produkter och det körs 1 000 gånger per minut kommer det att hämta 100 000 produkter per minut. Detta kan orsaka prestandaproblem.
Lösning: Optimera dina arbetsflöden genom att använda mindre data, eller använd väntesteg för att dela upp ditt arbetsflöde.
Många arbetsflöden som använder samma utlösare
I Flow kan du bygga mer än ett arbetsflöde med samma utlösare. Dessa arbetsflöden körs parallellt med varandra när händelsen inträffar. Detta kan vara problematiskt om du kör för många arbetsflöden med samma utlösare av följande anledningar:
- Arbetsflödena kan komma i konflikt med varandra.
- Arbetsflödena försöker hämta data och anropa API:er samtidigt, och din butik är begränsad i hur många förfrågningar den kan hantera samtidigt av Shopify API-gränser.
Lösning: Kombinera arbetsflöden som använder samma utlösare till ett enda arbetsflöde. Detta gör även att du kan styra när vart och ett av dem körs, så att de inte kommer i konflikt med varandra. Att kombinera arbetsflöden är särskilt användbart om arbetsflödena inte hämtar mycket data eller om de data de hämtar är desamma. Om arbetsflödena hämtar mycket distinkt data kan det hända att du upptäcker att det ger bättre prestanda att hålla dem separata.
Använda listor eller fel data
När du bygger ett arbetsflöde kan du använda en lista över objekt, till exempel produkter eller ordrar. Om du använder en lista över objekt kommer Flow att hämta alla objekt i listan. Detta kan vara ett problem när listan innehåller mycket data.
Ett annat vanligt problem är att du av misstag väljer fel data. För att till exempel kontrollera produktdata för en order kan du ha valt order/publication/products/tags istället för order/line items/product/tags. Det första resultatet är vanligtvis felaktigt, eftersom det hämtar alla produkter för en publikation när avsikten är att kontrollera produkter i ordern. Att välja en så stor lista kan orsaka prestandaproblem, och att välja fel lista kan leda till att din automatisering gör fel.
Lösning: Välj noggrant de data du behöver och undvik att använda listor när du inte behöver det. Testa dina arbetsflöden för att säkerställa att de gör vad du förväntar dig.
Metafält
Hämtning av data från enskilda metafält eller metaobjekt bör inte orsaka prestandaproblem. Ett vanligt problem är dock att välja listan metafields och loopa igenom alla metafält för en resurs. Om ett value-fält innehåller mycket data, till exempel när HTML-objekt används, kan det leda till att en stor mängd data bearbetas, vilket kan orsaka prestandaproblem.
Lösning: Använd metafield-objektet istället för metafields.
Överanvändning av Hämta data-åtgärder
Arbetsflöden som använder en Hämta data-åtgärd som Hämta orderdata är utformade för att returnera högst 100 objekt per arbetsflöde från Hämta data-åtgärder. Att överskrida 100 objekt kan orsaka prestandaproblem.
Lösning: Kör arbetsflödet oftare så att din sökfråga inte behöver returnera fler än 100 resultat. Återanvänd samma Hämta data-åtgärd istället för att göra upprepade sökfrågor.
Inga sökfilter i Hämta data-åtgärder
Hämta data-åtgärder anropar Shopify API. Om ingen sökfråga finns returnerar API:et antingen alla resurser eller inga alls. Detta kan orsaka prestandaproblem, men det kan också leda till att fel åtgärder vidtas i din butik när du använder den returnerade datan senare i arbetsflödet.
Lösning: Inkludera alltid sökfilter i dina Hämta data-åtgärder.
Felaktiga sökfilter i Hämta data-åtgärder
Sökfrågor i Hämta data har stöd för en begränsad uppsättning sökfilter, en specifik syntax och en specifik uppsättning värden som kan användas i filter. Om du anger fel filter, filtervärde eller syntax kan det leda till att hela sökfrågan ignoreras, vilket kan orsaka problem som liknar de som uppstår när inget sökfilter finns.
Lösning: Använd dokumentationen som tillhandahålls av åtgärden i Flow för att hitta listan över tillgängliga sökfilter. Testa alltid dina sökfilter för att säkerställa att de returnerar förväntade data. Du kan använda en Logga utdata-åtgärd i Flow för att granska den returnerade datan, eller så kan du anropa Shopify Admin API direkt via en API-klient som Postman eller via appen GraphiQL.
Fler lösningar för vanliga prestandaproblem
Använd väntesteg för att fördröja datahämtning
Väntesteg låter dig pausa ett arbetsflöde under en angiven tidsperiod, men väntesteg kan även användas för att optimera dina arbetsflöden. Varje väntesteg delar i praktiken upp körningen av ditt arbetsflöde i separata faser. När arbetsflödet körs hämtar det automatiskt den data som krävs fram till det första väntesteget (och hämtar data igen efter väntesteget för resten av arbetsflödet).
Om ett arbetsflöde använder en utlösare med hög volym och hämtar mycket data, men bara vidtar åtgärder ibland, kan du placera all komplex data eller logik efter ett villkor och ett väntesteg. Till exempel:
- Utlösare: Produktvariants lagerkvantitet ändrad.
- Villkor: Kontrollera om produkten finns i en produktserie.
- Om sant, Åtgärd: Vänta 2 sekunder.
- Åtgärd: Skicka ett e-postmeddelande till kunden (med mycket data).
I det här exemplet efterfrågas den data som krävs för steg 4 först när väntesteget har slutförts. Om villkoret vanligtvis är falskt innebär det att arbetsflödet körs snabbare och mer effektivt.
Vad du inte ska optimera
Använda samma data i flera åtgärder
När du använder samma fält i flera steg analyserar Flow användningen av dessa fält och hämtar endast datan en gång. Det innebär att du kan använda datan så många gånger du vill utan att behöva oroa dig för prestandan.