Optimering af dine arbejdsgange

Når du bygger et workflow, vil du gerne sikre dig, at det kører så effektivt som muligt. I dette dokument beskrives scenarier, der kan få dine workflows til at blive langsommere eller opbruge API-grænserne, og du får tip til, hvordan du løser disse problemer.

Almindelige problemer med ydeevnen

I dette afsnit beskrives almindelige scenarier, der kan medføre problemer med ydeevnen i dine workflows. Du kan have mere end ét scenarie på samme tid, hvilket vil øge risikoen for problemer med ydeevnen. Hvis fejl skyldes konfiguration af editoren eller begrænsning af hastigheden, skal du se vejledningen til fejlfinding.

Udløsere, der medfører store mængder data

Udløsere, der medfører store mængder data, er dem, hvor underliggende hændelser udføres mange gange. Det kan f.eks. være udløseren Lagerantallet for produktvarianter er ændret, som kører, hver gang der sker en lagerændring i en butik. Hyppigheden af en udløser vil multiplicere problemet i dit workflow. Hvis et workflow f.eks. henter 100 produkter, og det kører 1000 gange i minuttet, vil det hente 100.000 produkter i minuttet. Dette kan give problemer med ydeevnen.

Løsning: Optimer dine workflows ved at bruge færre data, eller brug ventetrin til at opdele dit workflow som beskrevet nedenfor.

Mange workflows bruger den samme udløser

I Flow kan du bygge mere end ét workflow med den samme udløser. Disse workflows kører parallelt med hinanden, når hændelsen finder sted. Dette kan være problematisk, hvis du kører for mange workflows med den samme udløser af følgende årsager:

  • Workflows kan være i konflikt med hinanden.
  • Workflows forsøger at hente data og foretage API-kald på samme tid, og din butik er begrænset i, hvor mange anmodninger den kan behandle på én gang på grund af Shopify API-grænserne.

Løsning: Kombiner workflows, der bruger den samme udløser, i et enkelt workflow. Dette giver dig også mulighed for at styre, hvornår hver af dem udføres, så de ikke kommer i konflikt med hinanden. Kombinering af workflows er især nyttigt, hvis dine workflows ikke henter en masse data, eller hvis de henter de samme data. Hvis dine workflows henter mange forskellige data, kan du opleve en bedre ydeevne, hvis du holder dem adskilt.

Brug af lister eller forkerte data

Når du bygger et workflow, kan du bruge en liste over objekter, f.eks. produkter eller ordrer. Hvis du bruger en liste over objekter, vil Flow hente alle objekterne på listen. Det kan være et problem, når listen indeholder mange data.

Et andet almindeligt problem er, at der ved en fejl vælges forkerte data. Hvis du vil tjekke produktdata for en ordre, kan du f.eks. have valgt order / publication / products / tags i stedet for order / line items / product / tags. Det første resultat er normalt forkert, da det henter alle produkter for en publikation, når det var hensigten at kontrollere produkterne i en ordre. Når der vælges en så stor liste, kan det medføre problemer med ydeevnen, og hvis der vælges en forkert liste, kan det medføre, at din automatisering udfører noget forkert.

Løsning: Vær omhyggelig med at vælge de data, du har brug for, og undgå at bruge lister, når du ikke har brug for det. Test dine workflows for at sikre, at de gør det, du forventer.

Metafelter

Hentning af individuelle metafelt- eller metaobjektdata bør ikke medføre problemer med ydeevnen. Et almindeligt problem er dog at vælge listen metafields og køre gennem alle metafelterne i en ressource. Hvis et value-felt indeholder mange data, f.eks. når der bruges HTML-objekter, kan det medføre, at der behandles mange data, hvilket potentielt kan medføre problemer med ydeevnen.

Løsning: Brug objektet metafield (dokumentation) i stedet for metafields.

Overforbrug af Hent data-handlinger

Workflows, der bruger en Hent data-handling, f.eks. Hent ordredata, er designet til at returnere maksimalt 100 objekter pr. workflow fra Hent data-handlinger. Hvis der hentes mere end 100 objekter, kan det medføre problemer med ydeevnen.

Løsning: Kør dit workflow oftere, så forespørgslen ikke behøver at returnere mere end 100 resultater. Genbrug den samme Hent data-handling frem for at lave gentagne forespørgsler.

Ingen forespørgselsfiltre i Hent data-handlinger

Hent data-handlinger foretager kald til Shopify API. Hvis der ikke er nogen forespørgsel, returnerer API’en enten alle eller ingen ressourcer. Dette kan medføre problemer med ydeevnen, men det kan også medføre, at der foretages forkerte handlinger i din butik, hvis du bruger de returnerede data senere i workflowet.

Løsning: Inkluder altid forespørgselsfiltre i dine Hent data-handlinger.

Forkerte forespørgselsfiltre i Hent data-handlinger

Hent data-forespørgsler understøtter et begrænset sæt forespørgselsfiltre, en specifik syntaks og et specifikt sæt værdier, der kan bruges i filtre. Hvis der angives et forkert filter, en forkert filterværdi eller en forkert syntaks, kan det medføre, at hele forespørgslen ignoreres, hvilket kan medføre problemer, som svarer til, at der ikke anvendes et forespørgselsfilter.

Løsning: Følg dokumentationen til handlingen i Flow for at se en liste over tilgængelige forespørgselsfiltre. Test altid dine forespørgselsfiltre for at sikre, at de returnerer de forventede data. Du kan bruge en Logfør output-handling i Flow (for at se de returnerede data), eller du kan foretage direkte kald til Shopify Admin API (via en API-klient som Postman eller gennem appen GraphiQL).

Yderligere løsninger på almindelige problemer med ydeevnen

Brug ventetrin til at forsinke hentning af data

Du kan bruge ventetrin til at sætte et workflow på pause i et bestemt tidsrum, men ventetrin kan også bruges til at optimere dine workflows. Hvert ventetrin opdeler udførelsen af dit workflow i separate blokke. Når dit workflow kører, hentes der automatisk data, som kræves indtil det første ventetrin (og der hentes igen data til resten af workflowet efter ventetrinnet). Hvis et workflow bruger en udløser, der henter mange data, men der kun udføres handlinger med mellemrum, kan du indsætte komplekse data eller logik efter en kombination af en betingelse og et ventetrin. Eksempel:

  1. Udløser: Lagerantallet for produktvarianter er ændret
  2. Betingelse: Tjek, om produktet indgår i en kollektion
  3. Hvis sandt, udfør denne handling: Vent 2 sekunder
  4. Handling: Send en mail til kunden (med mange data)

I dette eksempel sendes der kun en forespørgsel om data til trin 4, efter at ventetrinnet er fuldført. Hvis betingelsen normalt er falsk, betyder det, at workflowet kører hurtigere og mere effektivt.

Hvad man ikke skal optimere

Brug af de samme data i flere handlinger

Når du bruger det samme felt i flere trin, analyserer Flow brugen af disse felter, og dataene hentes kun én gang. Det betyder, at du kan bruge dataene så mange gange, du vil, uden at du skal være bekymret for ydeevnen.

Kan du ikke finde de svar, du leder efter? Vi er her for at hjælpe.