Optimera 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 når API-gränser och tips om hur du löser eller kringgår dessa problem.
På den här sidan
Vanliga prestandaproblem
Avsnittet beskriver vanliga scenarier som kan orsaka prestandaproblem i dina arbetsflöden. Det är möjligt att ha mer än ett scenario samtidigt, vilket ökar sannolikheten för prestandaproblem. För fel relaterade till redigerarkonfiguration eller anropsgränser använder du felsökningsguiden.
Utlösare med stor volym
Utlösare med stor volym är dem där den underliggande händelsen inträffar ofta. Till exempel körs utlösaren Lagerkvantiteten för produktvariant har ändrats för varje lagerändring i en butik. Volymen för en utlösare är som en multiplikator för alla problem i arbetsflödet. Till exempel: om ett arbetsflöde hämtar 100 produkter och det körs 1 000 gånger per minut, så 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 partitionera ditt arbetsflöde enligt beskrivningen nedan.
Många arbetsflöden använder samma utlösare
I Flow kan du bygga mer än ett arbetsflöde som använder samma utlösare. Dessa arbetsflöden kommer att köras parallellt med varandra när händelsen inträffar. Detta kan av följande skäl vara problematiskt om du kör för många arbetsflöden som använder samma utlösare:
- Arbetsflödena kan stå i konflikt med varandra.
- Arbetsflödena försöker hämta data och anropa API:er samtidigt och det finns en begränsning för hur många förfrågningar butiken 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 låter dig även styra när vart och ett av dem körs, så att de inte hamnar i konflikt med varandra. Att kombinera arbetsflöden är särskilt användbart om arbetsflödena inte hämtar mycket data eller om data de hämtar är densamma. Om arbetsflödena hämtar mycket distinkt data kan det ge bättre prestanda att hålla dem åtskilda.
Använda listor eller fel data
När du bygger ett arbetsflöde kan du använda en lista med objekt, som produkter eller ordrar. Om du använder en lista med 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 av misstag välja fel data. För att till exempel kontrollera produktdata i en order kan du ha valt order / publication / products / tags
istället för order / line items / product / tags
. Det första resultatet är oftast felaktigt, eftersom det hämtar alla produkter för en publikation när avsikten är att kontrollera produkterna i ordern. Att välja en så stor lista kan orsaka prestandaproblem och att välja fel lista kan resultera i att automatiseringen gör fel sak.
Lösning: Välj noggrant de data du behöver och undvik att använda listor när det inte behövs. Testa dina arbetsflöden för att säkerställa att de gör det du förväntar dig.
Metafält
Att hämta individuella metafälts- eller metaobjektsdata bör inte orsaka prestandaproblem. Ett vanligt problem är dock att välja listan metafields
och loopa över alla metafält i en resurs. Om ett value
-fält innehåller mycket data, till exempel när HTML-objekt används, så kan detta resultera i att mycket data bearbetas och potentiellt orsaka prestandaproblem.
Lösning: Använd objektet metafield
(docs) 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 maximalt 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 frågan inte behöver returnera mer än 100 resultat. Återanvänd samma Hämta data-åtgärd i stället för att göra upprepade frågor.
Inga frågefilter i Hämta data-åtgärder
Hämta data-åtgärder anropar Shopify API. Om ingen fråga finns så kommer API:et antingen att returnera alla resurser eller inga. Detta kan orsaka prestandaproblem, men det kan också göra att fel åtgärder vidtas i butiken, om du använder data som returneras senare i arbetsflödet.
Lösning: Inkludera alltid frågefilter i Hämta data-åtgärder.
Felaktiga frågefilter i Hämta data-åtgärder
Hämta data-frågor stöder en begränsad uppsättning frågefilter, 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 hela frågan ignoreras, vilket kan orsaka problem liknande när det inte finns något frågefilter.
Lösning: Använd dokumentationen som tillhandahålls av åtgärden i Flow för att hitta listan över tillgängliga frågefilter. Testa alltid dina frågefilter för att säkerställa att de returnerar förväntade data. Du kan använda en Loggutdata-åtgärd i Flow (för att se data som returneras) eller så kan du anropa Shopify Admin API direkt (genom en API-klient som Postman eller genom appen GraphiQL).
Ytterligare lösningar på vanliga prestandaproblem
Använd väntesteg för att fördröja datainhämtning
Väntesteg låter dig pausa ett arbetsflöde under en viss tid, men väntesteg kan också användas för att optimera arbetsflöden. Varje väntesteg delar effektivt upp körningen av arbetsflödet i separata block. När arbetsflödet körs hämtas automatiskt de data som krävs fram till första väntesteget (och data hämtas sedan igen efter väntesteget för resten av arbetsflödet). Om ett arbetsflöde använder en utlösare med stor volym och hämtar mycket data, men endast vidtar åtgärder ibland, så kan du lägga all komplex data eller logik efter ett villkors- och väntestegspar. Till exempel:
- Utlösare: Lagerkvantiteten för produktvariant har ändrats
- 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 de data som krävs för steg 4 endast efter att Vänta-steget har slutförts. Om skicket vanligtvis är falskt betyder det att arbetsflödet kommer att köras snabbare och mer effektivt.
Vad man 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 bara dessa data en gång. Det betyder att du kan använda data så många gånger du vill utan att behöva oroa dig över prestanda.