Ottimizzazione dei flussi di lavoro di Shopify Flow

Quando crei un flusso di lavoro, è importante assicurarsi che venga eseguito nel modo più efficiente possibile. Questo documento illustra gli scenari che potrebbero causare la limitazione dei flussi di lavoro o l'esaurimento dei limiti delle API e offre suggerimenti su come risolvere tali problemi o trovare soluzioni alternative.

Problemi di prestazioni comuni

Questa sezione illustra gli scenari comuni che possono causare problemi di prestazioni nei flussi di lavoro. È possibile che si verifichi più di uno scenario contemporaneamente, il che aumenterebbe la probabilità di riscontrare problemi di prestazioni. Per errori relativi alla configurazione dell'editor o alla limitazione della frequenza, consulta la guida alla risoluzione dei problemi.

Trigger ad alto volume

I trigger ad alto volume sono quelli in cui l'evento sottostante si verifica di frequente. Ad esempio, il trigger Quantità di scorte della variante di prodotto modificata viene eseguito per ogni modifica alle scorte in un negozio. Il volume di un trigger agisce come un moltiplicatore per qualsiasi problema nel flusso di lavoro. Ad esempio, se un flusso di lavoro recupera 100 prodotti e viene eseguito 1000 volte al minuto, recupererà 100.000 prodotti al minuto. Ciò può causare problemi di prestazioni.

Soluzione: ottimizza i flussi di lavoro utilizzando meno dati o utilizza i passaggi di attesa per partizionare il flusso di lavoro.

Molti flussi di lavoro che utilizzano lo stesso trigger

In Flow puoi creare più di un flusso di lavoro utilizzando lo stesso trigger. Questi flussi di lavoro verranno eseguiti in parallelo l'uno con l'altro quando si verifica l'evento. Ciò può essere problematico se esegui troppi flussi di lavoro che utilizzano lo stesso trigger per i seguenti motivi:

  • I flussi di lavoro possono entrare in conflitto tra loro.
  • I flussi di lavoro tentano di recuperare i dati e di chiamare le API contemporaneamente e il negozio è limitato nel numero di richieste che può gestire contemporaneamente dai limiti delle API di Shopify.

Soluzione: combina i flussi di lavoro che utilizzano lo stesso trigger in un unico flusso di lavoro. Ciò ti consente anche di controllare quando viene eseguito ognuno di essi, in modo che non entrino in conflitto tra loro. La combinazione di flussi di lavoro è particolarmente utile se i flussi di lavoro non recuperano una grande quantità di dati o se i dati recuperati sono gli stessi. Se i flussi di lavoro recuperano una grande quantità di dati distinti, potresti riscontrare che mantenerli separati si traduce in prestazioni migliori.

Utilizzo di elenchi o di dati errati

Quando crei un flusso di lavoro, potresti utilizzare un elenco di oggetti, come prodotti o ordini. Se utilizzi un elenco di oggetti, Flow recupererà tutti gli oggetti nell'elenco. Ciò può essere un problema quando l'elenco contiene una grande quantità di dati.

Un altro problema comune è la selezione accidentale di dati errati. Ad esempio, per controllare i dati di prodotto su un ordine, potresti aver selezionato order / publication / products / tags invece di order / line items / product / tags. Il primo risultato è generalmente errato, in quanto recupera tutti i prodotti per una pubblicazione, mentre l'intenzione è quella di controllare i prodotti nell'ordine. La scelta di un elenco così grande può causare problemi di prestazioni e la scelta dell'elenco errato può far sì che l'automazione esegua l'azione sbagliata.

Soluzione: seleziona attentamente i dati di cui hai bisogno ed evita di utilizzare elenchi quando non è necessario. Testa i flussi di lavoro per assicurarti che eseguano le azioni previste.

Metafield

Il recupero di singoli dati di metafield o metaobject non dovrebbe causare problemi di prestazioni. Tuttavia, un problema comune è la scelta dell'elenco metafields e l'esecuzione di un loop su tutti i metafield di una risorsa. Se un campo value contiene una grande quantità di dati, ad esempio quando vengono utilizzati oggetti HTML, ciò può comportare l'elaborazione di una grande quantità di dati e causare potenzialmente problemi di prestazioni.

Soluzione: utilizza l'oggetto metafield invece di metafields.

Uso eccessivo delle azioni "Recupera dati"

I flussi di lavoro che utilizzano un'azione Recupera dati come Recupera dati ordine sono progettati per restituire un massimo di 100 oggetti per flusso di lavoro dalle azioni Recupera dati. Il superamento di 100 oggetti può causare problemi di prestazioni.

Soluzione: esegui il flusso di lavoro più spesso, in modo che la query non debba restituire più di 100 risultati. Riutilizza la stessa azione Recupera dati invece di eseguire query ripetute.

Nessun filtro di query nelle azioni "Recupera dati"

Le azioni Recupera dati chiamano la Shopify API. Se non è presente alcuna query, l'API restituirà tutte le risorse o nessuna. Ciò può causare problemi di prestazioni, ma può anche causare l'esecuzione di azioni errate nel negozio quando utilizzi i dati restituiti più avanti nel flusso di lavoro.

Soluzione: includi sempre i filtri di query nelle azioni Recupera dati.

Filtri di query non corretti nelle azioni "Recupera dati"

Le query Recupera dati supportano un set limitato di filtri di query, una sintassi specifica e un set specifico di valori che possono essere utilizzati nei filtri. L'inserimento di un filtro, un valore di filtro o una sintassi errati può causare l'esclusione dell'intera query, il che può causare problemi simili a quelli che si verificano quando non è presente alcun filtro di query.

Soluzione: utilizza la documentazione fornita dall'azione in Flow per trovare l'elenco dei filtri di query disponibili. Testa sempre i filtri di query per assicurarti che restituiscano i dati previsti. Puoi utilizzare un'azione Output registro in Flow per esaminare i dati restituiti oppure puoi chiamare direttamente la Shopify Admin API tramite un client API come Postman o tramite l'app GraphiQL.

Soluzioni aggiuntive per i problemi di prestazioni comuni

Utilizzo dei passaggi di attesa per ritardare il recupero dei dati

I passaggi di attesa ti consentono di sospendere un flusso di lavoro per un determinato periodo di tempo, ma possono anche essere utilizzati per ottimizzare i flussi di lavoro. Ogni passaggio di attesa divide di fatto l'esecuzione del flusso di lavoro in fasi separate. Quando il flusso di lavoro viene eseguito, recupera automaticamente i dati richiesti fino al primo passaggio di attesa (e recupera nuovamente i dati dopo il passaggio di attesa per il resto del flusso di lavoro).

Se un flusso di lavoro utilizza un trigger ad alto volume e recupera una grande quantità di dati, ma eseguirà un'azione solo occasionalmente, puoi inserire dati o logica complessi dopo una coppia di passaggi "condizione" e "attesa". Ad esempio:

  1. Trigger: Quantità di scorte della variante di prodotto modificata.
  2. Condizione: controlla se il prodotto è in una collezione.
  3. Se vero, Azione: attendi 2 secondi.
  4. Azione: invia un'email al cliente (con una grande quantità di dati).

In questo esempio, i dati richiesti per il passaggio 4 vengono interrogati solo dopo il completamento del passaggio di attesa. Se la condizione è generalmente falsa, il flusso di lavoro verrà eseguito in modo più rapido ed efficiente.

Cosa non ottimizzare

Utilizzo degli stessi dati in più azioni

Quando utilizzi lo stesso campo in più passaggi, Flow analizza l'utilizzo di tali campi e recupera i dati una sola volta. Ciò significa che puoi utilizzare i dati tutte le volte che vuoi senza preoccuparti delle prestazioni.