Mengoptimalkan alur kerja Shopify Flow Anda
Saat membuat alur kerja, Anda tentu ingin memastikan alur kerja tersebut berjalan seefisien mungkin. Dokumen ini menguraikan skenario yang mungkin menyebabkan alur kerja Anda diperlambat atau menghabiskan batas API serta tips tentang cara mengatasi atau memberikan solusi sementara untuk masalah tersebut.
Di halaman ini
Masalah performa umum
Bagian ini menguraikan skenario umum yang dapat menyebabkan masalah performa di alur kerja Anda. Mungkin saja ada lebih dari satu skenario yang terjadi pada saat yang sama, yang akan meningkatkan kemungkinan Anda mengamati masalah performa. Untuk error yang terkait dengan konfigurasi editor atau pembatasan laju, gunakan panduan pemecahan masalah.
Pemicu bervolume tinggi
Pemicu bervolume tinggi adalah pemicu dengan peristiwa dasarnya sering terjadi. Misalnya, pemicu Jumlah inventaris varian produk berubah berjalan untuk setiap perubahan inventaris di sebuah toko. Volume pemicu berfungsi sebagai pengali untuk setiap masalah di alur kerja Anda. Misalnya, jika alur kerja mengambil 100 produk, dan berjalan 1.000 kali per menit, alur kerja akan mengambil 100.000 produk per menit. Hal ini dapat menyebabkan masalah performa.
Solusi: Optimalkan alur kerja Anda dengan menggunakan lebih sedikit data, atau gunakan langkah tunggu untuk mempartisi alur kerja Anda.
Banyak alur kerja yang menggunakan pemicu yang sama
Di Flow, Anda dapat membuat lebih dari satu alur kerja menggunakan pemicu yang sama. Alur kerja ini akan berjalan secara paralel satu sama lain saat peristiwa terjadi. Hal ini dapat menjadi masalah jika Anda menjalankan terlalu banyak alur kerja menggunakan pemicu yang sama karena alasan berikut:
- Alur kerja dapat berkonflik satu sama lain.
- Alur kerja mencoba mengambil data dan memanggil API pada saat yang sama, dan toko Anda memiliki batasan jumlah permintaan yang dapat ditangani sekaligus berdasarkan batas Shopify API.
Solusi: Gabungkan alur kerja yang menggunakan pemicu yang sama ke dalam satu alur kerja. Hal ini juga memungkinkan Anda untuk mengontrol waktu eksekusi masing-masing alur kerja, sehingga tidak saling berkonflik. Menggabungkan alur kerja sangat berguna jika alur kerja tidak mengambil kembali banyak data atau data yang diambil kembali sama. Jika alur kerja mengambil kembali banyak data yang berbeda, Anda mungkin akan mendapati bahwa memisahkannya akan menghasilkan performa yang lebih baik.
Menggunakan daftar atau data yang salah
Saat membuat alur kerja, Anda mungkin menggunakan daftar objek, seperti produk atau pesanan. Jika Anda menggunakan daftar objek, Flow akan mengambil semua objek dalam daftar tersebut. Ini bisa menjadi masalah ketika daftar berisi banyak data.
Masalah umum lainnya adalah tidak sengaja memilih data yang salah. Misalnya, untuk memeriksa data produk pada pesanan, Anda mungkin telah memilih order / publication / products / tags alih-alih order / line items / product / tags. Hasil pertama biasanya salah, karena mengambil semua produk untuk publikasi padahal tujuannya adalah memeriksa produk pada pesanan. Memilih daftar yang begitu besar dapat menyebabkan masalah performa dan memilih daftar yang salah dapat mengakibatkan otomatisasi Anda melakukan hal yang salah.
Solusi: Pilih data yang Anda perlukan dengan cermat dan hindari penggunaan daftar saat Anda tidak membutuhkannya. Uji alur kerja Anda untuk memastikan alur kerja tersebut melakukan hal yang Anda harapkan.
Bidang meta
Mengambil data metafield atau metaobjek individual seharusnya tidak menyebabkan masalah performa. Namun, masalah yang umum terjadi adalah memilih daftar metafields dan melakukan loop pada semua bidang meta pada suatu sumber daya. Jika bidang value berisi banyak data, misalnya, ketika objek HTML digunakan, hal ini dapat mengakibatkan banyak data yang diproses dan berpotensi menyebabkan masalah performa.
Solusi: Gunakan objek metafield, bukan metafields.
Penggunaan berlebihan tindakan Dapatkan data
Alur kerja yang menggunakan tindakan Dapatkan data seperti Dapatkan data pesanan dirancang untuk menampilkan maksimum 100 objek per alur kerja dari tindakan Dapatkan data. Melebihi 100 objek dapat menyebabkan masalah performa.
Solusi: Jalankan alur kerja lebih sering sehingga kueri Anda tidak perlu menampilkan lebih dari 100 hasil. Gunakan kembali tindakan Dapatkan data yang sama daripada membuat kueri berulang.
Tidak ada filter kueri dalam tindakan Dapatkan data
Tindakan Dapatkan data memanggil Shopify API. Jika tidak ada kueri, API akan menampilkan semua sumber daya atau tidak sama sekali. Hal ini dapat menyebabkan masalah performa, tetapi juga dapat menyebabkan tindakan yang salah diambil di toko Anda saat Anda menggunakan data yang ditampilkan nanti di alur kerja.
Solusi: Selalu sertakan filter kueri dalam tindakan Dapatkan data Anda.
Filter kueri yang salah dalam tindakan Dapatkan data
Kueri Dapatkan data mendukung set filter kueri yang terbatas, sintaksis tertentu, dan set nilai tertentu yang dapat digunakan dalam filter. Memasukkan filter, nilai filter, atau sintaksis yang salah dapat menyebabkan seluruh kueri diabaikan, yang dapat menyebabkan masalah yang serupa seperti saat tidak ada filter kueri.
Solusi: Gunakan dokumentasi yang disediakan oleh tindakan di Flow untuk menemukan daftar filter kueri yang tersedia. Selalu uji filter kueri Anda untuk memastikan filter tersebut menampilkan data yang diharapkan. Anda dapat menggunakan tindakan Catat Output di Flow untuk meninjau data yang ditampilkan, atau Anda dapat memanggil Shopify Admin API secara langsung melalui klien API seperti Postman atau melalui aplikasi GraphiQL.
Solusi tambahan untuk masalah performa umum
Gunakan langkah Tunggu untuk menunda pengambilan data
Langkah Tunggu memungkinkan Anda menjeda alur kerja untuk jangka waktu tertentu, tetapi langkah tunggu juga dapat digunakan untuk mengoptimalkan alur kerja Anda. Setiap langkah tunggu secara efektif membagi eksekusi alur kerja Anda menjadi beberapa fase terpisah. Saat alur kerja berjalan, alur kerja secara otomatis mengambil data yang diperlukan hingga langkah tunggu pertama (dan mengambil data lagi setelah langkah tunggu untuk sisa alur kerja).
Jika alur kerja menggunakan pemicu bervolume tinggi dan mengambil banyak data, tetapi hanya akan mengambil tindakan sesekali, maka Anda dapat menempatkan data atau logika kompleks apa pun setelah pasangan kondisi dan langkah tunggu. Contoh:
- Pemicu: Jumlah inventaris varian produk berubah.
- Kondisi: Periksa apakah produk ada dalam koleksi.
- Jika benar, Tindakan: Tunggu 2 detik.
- Tindakan: Kirim email ke pelanggan (dengan banyak data).
Dalam contoh ini, data yang diperlukan untuk langkah 4 hanya dikueri setelah langkah Tunggu selesai. Jika kondisi biasanya salah, ini berarti alur kerja akan berjalan lebih cepat dan lebih efisien.
Hal yang tidak perlu dioptimalkan
Menggunakan data yang sama dalam beberapa tindakan
Saat Anda menggunakan bidang yang sama dalam beberapa langkah, Flow menganalisis penggunaan bidang tersebut dan hanya mengambil data tersebut satu kali. Ini berarti Anda dapat menggunakan data tersebut sebanyak yang Anda inginkan tanpa perlu mengkhawatirkan performa.