Optimering af dine Shopify Flow-workflows

Når du opbygger et workflow, er det vigtigt at sikre, at det kører så effektivt som muligt. Dette dokument beskriver scenarier, der kan medføre, at dine workflows bliver begrænset eller opbruger API-grænser, samt tips til hvordan du kan løse eller omgå disse problemer.

Almindelige problemer med ydeevnen

Dette afsnit beskriver almindelige scenarier, der kan forårsage problemer med ydeevnen i dine workflows. Det er muligt at have mere end ét scenarie på samme tid, hvilket vil øge sandsynligheden for, at du oplever problemer med ydeevnen. For fejl i forbindelse med konfiguration af redigeringsværktøjet eller hastighedsbegrænsning skal du bruge fejlfindingsvejledningen.

Udløsere med høj volumen

Udløsere med høj volumen er dem, hvor den underliggende hændelse sker ofte. For eksempel kører udløseren Lagerantal for produktvariant er ændret for hver lagerændring i en butik. Volumen for en udløser fungerer som en multiplikator for ethvert problem i dit workflow. Hvis et workflow f.eks. henter 100 produkter, og det kører 1.000 gange i minuttet, vil det hente 100.000 produkter i minuttet. Dette kan forårsage problemer med ydeevnen.

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

Mange workflows, der bruger den samme udløser

I Flow kan du opbygge 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:

  • Disse workflows kan være i konflikt med hinanden.
  • Disse workflows forsøger at hente data og kalde API'er på samme tid, og din butik er begrænset i antallet af anmodninger, den kan håndtere på én gang, af Shopify API-grænser.

Løsning: Kombiner workflows, der bruger den samme udløser, til et enkelt workflow. Dette giver dig også mulighed for at styre, hvornår de enkelte workflows udføres, så de ikke kommer i konflikt med hinanden. Det er især nyttigt at kombinere workflows, hvis de ikke henter en masse data, eller hvis de data, de henter, er de samme. Hvis disse workflows henter en masse forskellige data, vil du måske opdage, at det giver en bedre ydeevne at holde dem adskilt.

Brug af lister eller forkerte data

Når du opbygger et workflow, bruger du måske en liste over objekter, f.eks. produkter eller ordrer. Hvis du bruger en liste over objekter, henter Flow alle objekterne på listen. Dette kan være et problem, når listen indeholder en masse data.

Et andet almindeligt problem er, at man ved en fejl kommer til at vælge de forkerte data. Hvis du f.eks. vil tjekke produktdata for en ordre, har du muligvis 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 hensigten er at tjekke produkter på ordren. Valg af så stor en liste kan forårsage problemer med ydeevnen, og valg af den forkerte liste kan resultere i, at din automatisering gør det forkerte.

Løsning: Vælg omhyggeligt de data, du har brug for, og undgå at bruge lister, når du ikke behøver det. Test dine workflows for at sikre, at de gør det, du forventer.

Metafelter

Hentning af individuelle data for metafelt eller metaobjekt bør ikke forårsage problemer med ydeevnen. Et almindeligt problem er dog at vælge listen metafields og gennemgå alle metafeltdata for en ressource. Hvis et value-felt indeholder en masse data, f.eks. når der bruges HTML-objekter, kan det resultere i, at en stor mængde data behandles, og det kan potentielt forårsage problemer med ydeevnen.

Løsning: Brug metafield-objektet i stedet for metafields.

Overforbrug af Hent data-handlinger

Workflows, der bruger en Hent data-handling som f.eks. Hent ordredata, er designet til at returnere højst 100 objekter pr. workflow fra Hent data-handlinger. Hvis du overskrider 100 objekter, kan det medføre problemer med ydeevnen.

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

Ingen forespørgselsfiltre i Hent data-handlinger

Hent data-handlinger kalder Shopify API. Hvis der ikke er nogen forespørgsel, returnerer API'en enten alle ressourcer eller ingen. Dette kan forårsage problemer med ydeevnen, men det kan også medføre, at de forkerte handlinger udføres i din butik, når du bruger de returnerede data senere i dit workflow.

Løsning: Medtag 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 du angiver det forkerte filter, den forkerte filterværdi eller syntaks, kan det medføre, at hele forespørgslen ignoreres, hvilket kan forårsage problemer, der ligner dem, der opstår, når der ikke er noget forespørgselsfilter.

Løsning: Brug den dokumentation, der følger med handlingen i Flow, til at finde listen over tilgængelige forespørgselsfiltre. Test altid dine forespørgselsfiltre for at sikre, at de returnerer de forventede data. Du kan bruge en Log output-handling i Flow til at gennemgå de returnerede data, eller du kan kalde Shopify Admin API direkte via en API-klient som Postman eller via appen GraphiQL.

Yderligere løsninger på almindelige problemer med ydeevnen

Brug ventetrin til at forsinke datahentning

Ventetrin giver dig mulighed for at sætte et workflow på pause i et bestemt tidsrum, men ventetrin kan også bruges til at optimere dine workflows. Hvert ventetrin opdeler reelt udførelsen af dit workflow i separate faser. Når dit workflow kører, henter det automatisk de data, der er nødvendige op til det første ventetrin (og henter data igen efter ventetrinnet for resten af dit workflow).

Hvis et workflow bruger en udløser med høj volumen og henter en masse data, men kun udfører en handling lejlighedsvis, kan du placere alle komplekse data eller logik efter et par bestående af en betingelse og et ventetrin. Eksempel:

  1. Udløser: Lagerantal for produktvariant er ændret.
  2. Betingelse: Tjek, om produktet er i en kollektion.
  3. Hvis sand, Handling: Vent 2 sekunder.
  4. Handling: Send en mail til kunden (med en masse data).

I dette eksempel forespørges de data, der kræves til trin 4, først, efter at ventetrinnet er fuldført. Hvis betingelsen normalt er falsk, betyder det, at dit workflow vil køre hurtigere og mere effektivt.

Hvad du 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 henter kun disse data én gang. Det betyder, at du kan bruge dataene så mange gange, du vil, uden at bekymre dig om ydeevnen.