Optymalizacja procesów Shopify Flow
Tworząc proces, chcesz mieć pewność, że będzie on działał tak wydajnie, jak to możliwe. W tym dokumencie przedstawiono scenariusze, które mogą powodować spowalnianie procesów lub wyczerpywanie limitów API, a także wskazówki dotyczące rozwiązywania tych problemów lub stosowania rozwiązań alternatywnych.
Na tej stronie
Częste problemy z wydajnością
W tej sekcji opisano typowe scenariusze, które mogą powodować problemy z wydajnością w procesach. Może wystąpić więcej niż jeden scenariusz w tym samym czasie, co zwiększyłoby prawdopodobieństwo zaobserwowania problemów z wydajnością. W przypadku błędów związanych z konfiguracją edytora lub ograniczaniem szybkości skorzystaj z przewodnika rozwiązywania problemów.
Wyzwalacze o dużej częstotliwości
Wyzwalacze o dużej częstotliwości to takie, w przypadku których zdarzenie bazowe występuje często. Na przykład wyzwalacz Zmieniono ilość zapasów wariantu produktu jest uruchamiany przy każdej zmianie zapasów w sklepie. Częstotliwość wyzwalacza działa jak mnożnik każdego problemu w procesie. Jeśli na przykład proces pobiera 100 produktów i jest uruchamiany 1000 razy na minutę, będzie pobierał 100 000 produktów na minutę. Może to powodować problemy z wydajnością.
Rozwiązanie: Zoptymalizuj procesy, używając mniejszej ilości danych lub użyj kroków oczekiwania, aby podzielić proces na partycje.
Wiele procesów korzystających z tego samego wyzwalacza
W aplikacji Flow możesz utworzyć więcej niż jeden proces korzystający z tego samego wyzwalacza. Te procesy będą uruchamiane równolegle względem siebie, gdy wystąpi zdarzenie. Może to być problematyczne, jeśli uruchomisz zbyt wiele procesów używających tego samego wyzwalacza z następujących powodów:
- Procesy mogą być ze sobą w konflikcie.
- Procesy próbują jednocześnie pobierać dane i wywoływać interfejsy API, a sklep jest ograniczony pod względem liczby żądań, które może obsłużyć jednocześnie, przez limity Shopify API.
Rozwiązanie: Połącz procesy, które używają tego samego wyzwalacza, w jeden proces. Pozwala to również kontrolować, kiedy każdy z nich jest wykonywany, dzięki czemu nie będą one ze sobą w konflikcie. Łączenie procesów jest szczególnie przydatne, jeśli procesy nie pobierają dużej ilości danych lub pobierane przez nie dane są takie same. Jeśli procesy pobierają wiele różnych danych, może się okazać, że pozostawienie ich oddzielnie zapewni lepszą wydajność.
Używanie list lub niewłaściwych danych
Podczas tworzenia procesu możesz użyć listy obiektów, takich jak produkty lub zamówienia. Jeśli użyjesz listy obiektów, aplikacja Flow pobierze wszystkie obiekty z listy. Może to stanowić problem, gdy lista zawiera dużą ilość danych.
Innym częstym problemem jest przypadkowe wybranie niewłaściwych danych. Na przykład, aby sprawdzić dane produktu w zamówieniu, można wybrać zamówienie / publikacja / produkty / tagi zamiast zamówienie / pozycje pojedyncze / produkt / tagi. Pierwszy wynik jest zwykle nieprawidłowy, ponieważ pobiera wszystkie produkty dla publikacji, podczas gdy celem jest sprawdzenie produktów w zamówieniu. Wybranie tak dużej listy może powodować problemy z wydajnością, a wybranie niewłaściwej listy może spowodować, że automatyzacja będzie działać nieprawidłowo.
Rozwiązanie: Starannie wybieraj potrzebne dane i unikaj używania list, gdy nie jest to konieczne. Testuj procesy, aby upewnić się, że działają zgodnie z oczekiwaniami.
Metapola
Pobieranie danych pojedynczego metapola lub metaobiektu nie powinno powodować problemów z wydajnością. Częstym problemem jest jednak wybranie listy metapola i iterowanie po wszystkich metapolach w zasobie. Jeśli pole wartość zawiera dużą ilość danych, na przykład w przypadku użycia obiektów HTML, może to spowodować przetwarzanie dużej ilości danych i potencjalnie problemy z wydajnością.
Rozwiązanie: Użyj obiektu metapole zamiast metapola.
Nadmierne użycie akcji Pobierz dane
Procesy używające akcji Pobierz dane, takiej jak Pobierz dane zamówienia, są zaprojektowane tak, aby zwracać maksymalnie 100 obiektów na proces z akcji Pobierz dane. Przekroczenie 100 obiektów może powodować problemy z wydajnością.
Rozwiązanie: Uruchamiaj proces częściej, aby zapytanie nie musiało zwracać więcej niż 100 wyników. Użyj ponownie tej samej akcji Pobierz dane, zamiast wykonywać powtarzające się zapytania.
Brak filtrów zapytań w akcjach Pobierz dane
Akcje Pobierz dane wywołują Shopify API. Jeśli nie ma zapytania, interfejs API zwróci wszystkie zasoby lub żadnego. Może to powodować problemy z wydajnością, ale może również spowodować podjęcie niewłaściwych działań w sklepie, gdy użyjesz danych zwróconych w dalszej części procesu.
Rozwiązanie: Zawsze uwzględniaj filtry zapytań w akcjach Pobierz dane.
Nieprawidłowe filtry zapytań w akcjach Pobierz dane
Zapytania Pobierz dane obsługują ograniczony zestaw filtrów zapytań, określoną składnię i określony zestaw wartości, których można używać w filtrach. Wprowadzenie niewłaściwego filtra, wartości filtra lub składni może spowodować zignorowanie całego zapytania, co może powodować problemy podobne do tych, które występują w przypadku braku filtra zapytania.
Rozwiązanie: Skorzystaj z dokumentacji udostępnionej przez akcję w aplikacji Flow, aby znaleźć listę dostępnych filtrów zapytań. Zawsze testuj filtry zapytań, aby upewnić się, że zwracają oczekiwane dane. Możesz użyć akcji Log Output w aplikacji Flow, aby przejrzeć zwrócone dane, lub możesz wywołać Shopify Admin API bezpośrednio przez klienta API, takiego jak Postman lub za pośrednictwem aplikacji GraphiQL.
Dodatkowe rozwiązania częstych problemów z wydajnością
Użyj kroków Oczekiwanie, aby opóźnić pobieranie danych
Kroki oczekiwania umożliwiają wstrzymanie procesu na określony czas, ale mogą być również używane do optymalizacji procesów. Każdy krok oczekiwania skutecznie dzieli wykonanie procesu na osobne fazy. Gdy proces jest uruchamiany, automatycznie pobiera dane wymagane do pierwszego kroku oczekiwania (i ponownie pobiera dane po kroku oczekiwania dla pozostałej części procesu).
Jeśli proces używa wyzwalacza o dużej częstotliwości i pobiera dużo danych, ale podejmuje działania tylko sporadycznie, możesz umieścić wszelkie złożone dane lub logikę po parze warunku i kroku oczekiwania. Na przykład:
- Wyzwalacz: Zmieniono ilość zapasów wariantu produktu.
- Warunek: Sprawdź, czy produkt znajduje się w kolekcji.
- Jeśli prawda, Akcja: Poczekaj 2 sekundy.
- Akcja: Wyślij e-mail do klienta (z dużą ilością danych).
W tym przykładzie dane wymagane dla kroku 4 są odpytywane dopiero po zakończeniu kroku oczekiwania. Jeśli warunek jest zwykle fałszywy, oznacza to, że proces będzie działał szybciej i wydajniej.
Czego nie optymalizować
Używanie tych samych danych w wielu akcjach
Gdy używasz tego samego pola w wielu krokach, aplikacja Flow analizuje wykorzystanie tych pól i pobiera te dane tylko raz. Oznacza to, że możesz używać danych tyle razy, ile chcesz, nie martwiąc się o wydajność.