Ottimizzare il tuo flusso di lavoro

Quando si crea un flusso di lavoro, si vuole essere certi che funzioni nel modo più efficiente possibile. In questo documento vengono descritti gli scenari che potrebbero causare la limitazione del flusso di lavoro o l'esaurimento dei limiti API , nonché suggerimenti su come risolvere o trovare una soluzione alternativa a tali problemi.

Problemi comuni di prestazioni

In questa sezione vengono descritti gli scenari comuni che possono causare problemi di prestazioni nel flusso di lavoro. È possibile che si verifichino più scenari contemporaneamente, il che aumenterebbe la probabilità di riscontrare problemi di prestazioni. Per errori relativi alla configurazione dell'editor o alla limitazione della velocità, utilizzare la guida alla risoluzione dei problemi.

Grilletto ad alto volume

I trigger ad alto volume sono quelli in cui l'evento sottostante si verifica frequentemente. Ad esempio, il trigger variante di prodotto quantità di scorte modificato viene eseguito per ogni variazione di inventario in un negozio. Il volume di un trigger è come un moltiplicatore per qualsiasi problema nel flusso di lavoro. Ad esempio, se un flusso di lavoro Fetch 100 prodotto e viene eseguito 1000 volte al minuto, allora recupererà 100.000 prodotti al minuto. Ciò può causare problemi di prestazioni.

Soluzione: ottimizza il tuo flusso di lavoro utilizzando meno dati oppure usa i passaggi di attesa per partizionare il tuo flusso di lavoro come descritto di seguito.

Molti flussi di lavoro utilizzando lo stesso trigger

In Flow, puoi creare più di un flusso di lavoro utilizzando lo stesso trigger. Questi flussi di lavoro scorreranno parallelamente l'uno all'altro quando si verificherà l'evento. Ciò può rivelarsi problematico se si eseguono troppi flussi di lavoro utilizzando lo stesso trigger per i seguenti motivi:

  • I flussi di lavoro possono entrare in conflitto tra loro.
  • Il flusso di lavoro sta tentando di Fetch dati e chiamare l'API contemporaneamente e il tuo negozio è limitato nel numero di richieste che può handle contemporaneamente dai limitiAPI di Shopify.

Soluzione: Combine flussi di lavoro che utilizzano lo stesso trigger in un unico flusso di lavoro. Ciò consente anche di controllare quando ciascuno di essi viene eseguito, in modo che non entrino in conflitto tra loro. Combine flusso di lavoro è particolarmente utile se i flussi di lavoro non recuperano molti dati oppure i dati recuperati sono gli stessi. Se il flusso di lavoro recupera molti dati distinti, potresti scoprire che tenerli separati comporta prestazioni migliori.

Utilizzo di elenchi o dati errati

Quando si crea un flusso di lavoro, si può utilizzare un elenco di oggetti, ad esempio prodotto o ordini. Se si utilizza un elenco di oggetti, Flow Fetch tutti gli oggetti nell'elenco. Ciò può rappresentare un problema quando l'elenco contiene molti dati.

Un altro problema comune è la selezione accidentale di dati sbagliati. Ad esempio, per controllare i dati del prodotto in un ordine, potresti aver selezionato order / publication / products / tags anziché order / line items / product / tags. Il primo risultato è solitamente errato, poiché Fetch tutti i prodotti per una pubblicazione quando l'intenzione è quella di controllare i prodotti nell'ordine. La scelta di un elenco così ampio può causare problemi di prestazioni, mentre la scelta dell'elenco sbagliato può comportare che l' Automation faccia la cosa sbagliata.

Soluzione: seleziona con attenzione i dati di cui hai bisogno ed evita di utilizzare elenchi quando non sono necessari. Metti alla prova il tuo flusso di lavoro per assicurarti che stia facendo ciò che ti aspetti.

Metafield

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

Soluzione: utilizzare l'oggetto metafield (docs) invece di metafields.

Uso eccessivo delle azioni Ottieni dati

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

Soluzione: eseguire il flusso di lavoro più spesso in modo che la query non restituisca più di 100 risultati. Riutilizzare la stessa azione Ottieni dati invece di effettuare query ripetute.

Nessun filtro di query nelle azioni Ottieni dati

Le azioni per ottenere dati chiamano l'API di Shopify. Se non è presente alcuna query, l'API restituirà tutte le risorse oppure nessuna. Ciò può causare problemi di prestazioni, ma può anche far sì che vengano intraprese azioni errate nel tuo negozio, se utilizzi i dati restituiti in un secondo momento nel flusso di lavoro.

Soluzione: includere sempre filtri di query nelle azioni Ottieni dati.

Filtri di query non corretti nelle azioni Ottieni dati

Le query di acquisizione 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'immissione di un filtro, di un valore di filtro o di una sintassi errati può causare l'ignoranza dell'intera query, con conseguenti problemi simili a quelli che si verificano quando non è presente alcun filtro di query.

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

Soluzioni aggiuntive per problemi di prestazioni comuni

Utilizzare i passaggi di attesa per ritardare il recupero dei dati

I passaggi di attesa consentono di mettere in pausa un flusso di lavoro per un periodo di tempo specificato, ma possono essere utilizzati anche per ottimizzare il flusso di lavoro. Ogni fase di attesa Split efficacemente l'esecuzione del flusso di lavoro in blocchi separati. Quando il flusso di lavoro è in esecuzione, Fetch automaticamente i dati richiesti fino al primo passaggio di attesa (e Fetch nuovamente i dati dopo il passaggio di attesa per il REST del flusso di lavoro). Se un flusso di lavoro utilizza un trigger ad alto volume e Fetch molti dati, ma esegue azioni solo occasionalmente, è possibile inserire dati complessi o logica dopo una condizione e attendere il passaggio associato. Per esempio:

  1. trigger: variante di prodotto quantità di scorte cambiato
  2. condizione: Controllare se il prodotto è in una collezione
  3. Se vero, Azione: Attendi 2 secondi
  4. Azione: Invia un'email al cliente (con molti dati)

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

Cosa non ottimizzare

Utilizzo degli stessi dati in più azioni

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

Non trovi le risposte che stai cercando? Siamo qui per aiutarti.