Optimalisering av Shopify Flow-arbeidsflyter
Når du bygger en arbeidsflyt, vil du forsikre deg om at den kjører så effektivt som mulig. Dette dokumentet beskriver scenarioer som kan føre til at arbeidsflytene dine strupes eller bruker opp API-grensene, samt tips om hvordan du kan løse disse problemene eller finne midlertidige løsninger.
På denne siden
Vanlige ytelsesproblemer
Denne delen beskriver vanlige scenarioer som kan forårsake ytelsesproblemer i arbeidsflytene dine. Det er mulig å ha mer enn ett scenario samtidig, noe som øker sannsynligheten for at du opplever ytelsesproblemer. For feil knyttet til redigeringsprogramkonfigurasjon eller hastighetsbegrensning kan du bruke feilsøkingsveiledningen.
Utløsere med høyt volum
Utløsere med høyt volum er utløsere der den underliggende hendelsen skjer ofte. For eksempel kjører utløseren Produktvariantens lagerantall endret for hver lagerendring i en butikk. Volumet til en utløser fungerer som en multiplikator for ethvert problem i arbeidsflyten din. Hvis en arbeidsflyt for eksempel henter 100 produkter, og den kjører 1000 ganger i minuttet, vil den hente 100 000 produkter i minuttet. Dette kan forårsake ytelsesproblemer.
Løsning: Optimaliser arbeidsflytene ved å bruke mindre data, eller bruk ventetrinn til å dele opp arbeidsflyten.
Mange arbeidsflyter som bruker samme utløser
I Shopify Flow kan du bygge mer enn én arbeidsflyt som bruker samme utløser. Disse arbeidsflytene kjører parallelt med hverandre når hendelsen inntreffer. Dette kan være problematisk hvis du kjører for mange arbeidsflyter som bruker samme utløser, av følgende årsaker:
- Arbeidsflytene kan komme i konflikt med hverandre.
- Arbeidsflytene prøver å hente data og kalle API-er samtidig, og butikken din er begrenset i hvor mange forespørsler den kan håndtere samtidig av Shopify API-grensene.
Løsning: Kombiner arbeidsflyter som bruker samme utløser til én enkelt arbeidsflyt. Dette lar deg også kontrollere når hver av dem kjøres, slik at de ikke kommer i konflikt med hverandre. Å kombinere arbeidsflyter er spesielt nyttig hvis arbeidsflytene ikke henter mye data, eller hvis dataene de henter er de samme. Hvis arbeidsflytene henter mye ulik data, kan det hende du oppdager at det å holde dem atskilt gir bedre ytelse.
Bruk av lister eller feil data
Når du bygger en arbeidsflyt, kan det hende du bruker en liste med objekter, som for eksempel produkter eller bestillinger. Hvis du bruker en liste med objekter, vil Shopify Flow hente alle objektene i listen. Dette kan være et problem når listen inneholder mye data.
Et annet vanlig problem er å velge feil data ved et uhell. For å sjekke produktdata for en bestilling, kan det for eksempel hende at du har valgt bestilling / publikasjon / produkter / tagger i stedet for bestilling / poster / produkt / tagger. Det første resultatet er vanligvis feil, ettersom det henter alle produktene for en publikasjon når intensjonen er å sjekke produktene i bestillingen. Å velge en så stor liste kan forårsake ytelsesproblemer, og å velge feil liste kan føre til at automasjonen gjør feil ting.
Løsning: Velg dataene du trenger med omhu, og unngå å bruke lister når du ikke trenger det. Test arbeidsflytene for å sikre at de gjør det du forventer.
Metafelt
Å hente individuelle data fra metafelt eller metaobjekter bør ikke forårsake ytelsesproblemer. Et vanlig problem er imidlertid å velge listen metafelt og gå i løkke gjennom alle metafeltene på en ressurs. Hvis et verdi-felt inneholder mye data, for eksempel når HTML-objekter brukes, kan dette føre til at mye data behandles og potensielt forårsake ytelsesproblemer.
Løsning: Bruk metafelt-objektet i stedet for metafelt.
Overforbruk av Hent data-handlinger
Arbeidsflyter som bruker en Hent data-handling, som for eksempel Hent bestillingsdata, er utformet for å returnere maksimalt 100 objekter per arbeidsflyt fra Hent data-handlinger. Å overstige 100 objekter kan forårsake ytelsesproblemer.
Løsning: Kjør arbeidsflyten oftere, slik at spørringen ikke trenger å returnere mer enn 100 resultater. Gjenbruk den samme Hent data-handlingen i stedet for å utføre gjentatte spørringer.
Ingen spørringsfiltre i Hent data-handlinger
Hent data-handlinger kaller Shopify API. Hvis ingen spørring er til stede, vil API-et enten returnere alle ressursene eller ingen. Dette kan forårsake ytelsesproblemer, men det kan også føre til at feil handlinger utføres i butikken din når du bruker dataene som returneres senere i arbeidsflyten.
Løsning: Inkluder alltid spørringsfiltre i Hent data-handlingene.
Feil spørringsfiltre i Hent data-handlinger
Hent data-spørringer støtter et begrenset sett med spørringsfiltre, en spesifikk syntaks og et spesifikt sett med verdier som kan brukes i filtre. Hvis du angir feil filter, filterverdi eller syntaks, kan det føre til at hele spørringen ignoreres, noe som kan forårsake lignende problemer som når ingen spørringsfiltre er til stede.
Løsning: Bruk dokumentasjonen som følger med handlingen i Shopify Flow for å finne listen over tilgjengelige spørringsfiltre. Test alltid spørringsfiltrene for å sikre at de returnerer de forventede dataene. Du kan bruke en Logg utdata-handling i Shopify Flow for å se gjennom dataene som returneres, eller du kan kalle Shopify Admin API direkte gjennom en API-klient som Postman eller gjennom appen GraphiQL.
Flere løsninger på vanlige ytelsesproblemer
Bruk ventetrinn til å forsinke datahenting
Ventetrinn lar deg sette en arbeidsflyt på pause i en angitt tidsperiode, men ventetrinn kan også brukes til å optimalisere arbeidsflytene dine. Hvert ventetrinn deler effektivt opp kjøringen av arbeidsflyten din i separate faser. Når arbeidsflyten kjører, henter den automatisk data som er nødvendig frem til det første ventetrinnet (og henter data på nytt etter ventetrinnet for resten av arbeidsflyten).
Hvis en arbeidsflyt bruker en utløser med høyt volum og henter mye data, men bare utfører en handling av og til, kan du plassere eventuelle komplekse data eller logikk etter et par med en betingelse og et ventetrinn. For eksempel:
- Utløser: Produktvariantens lagerantall endret.
- Betingelse: Sjekk om produktet er i en samling.
- Hvis sann, handling: Vent i 2 sekunder.
- Handling: Send en e-post til kunden (med mye data).
I dette eksempelet spørres dataene som kreves for trinn 4 først etter at ventetrinnet er fullført. Hvis betingelsen vanligvis er usann, betyr dette at arbeidsflyten kjører raskere og mer effektivt.
Hva du ikke bør optimalisere
Bruk av de samme dataene i flere handlinger
Når du bruker samme felt i flere trinn, analyserer Shopify Flow bruken av disse feltene og henter bare dataene én gang. Dette betyr at du kan bruke dataene så mange ganger du vil uten å bekymre deg for ytelsen.