Mengoptimumkan aliran kerja Shopify Flow anda

Apabila anda membina aliran kerja, anda pasti mahu memastikan aliran kerja tersebut berjalan seefisien yang mungkin. Dokumen ini menggariskan senario yang mungkin menyebabkan aliran kerja anda dibataskan atau kehabisan had API dan petua tentang cara untuk menyelesaikan atau mencari jalan penyelesaian alternatif bagi isu tersebut.

Isu prestasi biasa

Bahagian ini menggariskan senario biasa yang boleh menyebabkan isu prestasi dalam aliran kerja anda. Anda berkemungkinan untuk mengalami lebih daripada satu senario pada masa yang sama, dan hal ini akan meningkatkan kebarangkalian berlakunya isu prestasi. Untuk ralat yang berkaitan dengan konfigurasi editor atau pengehadan kadar, gunakan panduan penyelesaian masalah.

Pencetus volum tinggi

Pencetus volum tinggi merujuk kepada pencetus bagi kejadian dasar yang berlaku secara kerap. Contohnya, pencetus Kuantiti inventori varian produk berubah berjalan untuk setiap perubahan inventori di sesebuah kedai. Volum pencetus bertindak sebagai pengganda bagi sebarang masalah dalam aliran kerja anda. Contohnya, jika sesebuah aliran kerja mengambil 100 produk dan berjalan sebanyak 1,000 kali seminit, maka ia akan mengambil 100,000 produk seminit. Hal ini boleh menyebabkan isu prestasi.

Penyelesaian: Optimumkan aliran kerja anda dengan menggunakan kurang data, atau gunakan langkah tunggu untuk memisahkan aliran kerja anda.

Banyak aliran kerja menggunakan pencetus yang sama

Dalam Flow, anda boleh membina lebih daripada satu aliran kerja yang menggunakan pencetus yang sama. Aliran kerja ini akan berjalan serentak sesama sendiri apabila kejadian tersebut berlaku. Hal ini boleh mendatangkan masalah jika anda menjalankan terlalu banyak aliran kerja menggunakan pencetus yang sama atas sebab-sebab yang berikut:

  • Aliran kerja boleh bercanggah sesama sendiri.
  • Aliran kerja ini cuba untuk mengambil data dan memanggil API pada masa yang sama, dan kedai anda terhad pada jumlah permintaan yang boleh dikendalikan secara serentak yang ditetapkan oleh had API Shopify.

Penyelesaian: Gabungkan aliran kerja yang menggunakan pencetus yang sama menjadi satu aliran kerja tunggal. Hal ini juga membolehkan anda mengawal waktu setiap daripadanya dilaksanakan agar aliran kerja ini tidak bercanggah sesama sendiri. Penggabungan aliran kerja amat berguna jika aliran kerja tidak mengambil semula banyak data atau data yang diambil semula adalah sama. Jika aliran kerja mengambil semula banyak data yang berbeza, prestasi mungkin lebih baik sekiranya aliran kerja dibiarkan berasingan.

Menggunakan senarai atau data yang salah

Apabila anda membina aliran kerja, anda mungkin menggunakan senarai objek seperti produk atau pesanan. Jika anda menggunakan senarai objek, maka Flow akan mengambil semua objek dalam senarai tersebut. Hal ini boleh menimbulkan masalah apabila senarai tersebut mengandungi terlalu banyak data.

Satu lagi isu biasa ialah tersalah memilih data. Contohnya, untuk menyemak data produk dalam sesuatu pesanan, anda mungkin telah memilih pesanan / penerbitan / produk / teg dan bukannya pesanan / item baris / produk / teg. Hasil yang pertama lazimnya salah, kerana proses ini mengambil semua produk untuk sesuatu penerbitan walhal tujuannya adalah untuk menyemak produk pada pesanan tersebut. Pemilihan senarai yang begitu besar boleh menyebabkan isu prestasi, manakala pemilihan senarai yang salah boleh mengakibatkan automasi anda melakukan perkara yang salah.

Penyelesaian: Pilih data yang anda perlukan dengan teliti dan elakkan daripada menggunakan senarai jika tidak perlu. Uji aliran kerja anda untuk memastikan proses ini berjalan seperti yang dijangkakan.

Medan meta

Tindakan mengambil data medan meta atau metaobjek secara individu sepatutnya tidak akan menyebabkan isu prestasi. Walau bagaimanapun, isu yang biasa berlaku ialah sewaktu memilih senarai metafields dan melingkari semua medan meta pada sesuatu sumber. Jika sesuatu medan value mengandungi banyak data (sebagai contoh, apabila objek HTML digunakan), hal ini boleh mengakibatkan jumlah pemprosesan data yang besar dan berpotensi untuk menyebabkan isu prestasi.

Penyelesaian: Gunakan objek metafield berbanding metafields.

Penggunaan tindakan Dapatkan data yang berlebihan

Aliran kerja yang menggunakan tindakan Dapatkan data seperti Dapatkan data pesanan direka bentuk untuk mengembalikan maksimum sebanyak 100 objek untuk setiap aliran kerja melalui tindakan Dapatkan data. Bilangan yang melebihi 100 objek boleh menyebabkan isu prestasi.

Penyelesaian: Jalankan aliran kerja dengan lebih kerap agar pertanyaan anda tidak perlu mengembalikan lebih daripada 100 hasil carian. Gunakan semula tindakan Dapatkan data yang sama berbanding membuat pertanyaan berulang.

Tiada penapis pertanyaan dalam tindakan Dapatkan data

Tindakan Dapatkan data memanggil API Shopify. Jika tiada pertanyaan yang wujud, API akan mengembalikan sama ada semua sumber atau tiada sumber langsung. Hal ini boleh menyebabkan isu prestasi, dan turut menyebabkan tindakan yang salah diambil pada kedai anda apabila anda menggunakan data yang dikembalikan secara lebih lanjut dalam aliran kerja tersebut.

Penyelesaian: Sentiasa sertakan penapis pertanyaan dalam tindakan Dapatkan data anda.

Penapis pertanyaan yang salah dalam tindakan Dapatkan data

Pertanyaan Dapatkan data menyokong set penapis pertanyaan yang terhad, sintaks khusus dan set nilai khusus yang boleh digunakan di dalam penapis. Sekiranya penapis, nilai penapis, atau sintaks yang salah dimasukkan, perkara ini boleh menyebabkan keseluruhan pertanyaan diabaikan, lantas mewujudkan isu yang serupa seperti ketika tiada penapis pertanyaan wujud.

Penyelesaian: Gunakan dokumentasi yang disediakan oleh tindakan dalam Flow untuk mencari senarai penapis pertanyaan yang tersedia. Sentiasa uji penapis pertanyaan anda untuk memastikan ia mengembalikan data yang dijangkakan. Anda boleh menggunakan tindakan Output log dalam Flow untuk menyemak data yang dikembalikan, atau anda boleh memanggil Shopify Admin API secara langsung melalui klien API seperti Postman atau melalui aplikasi GraphiQL.

Penyelesaian tambahan untuk isu prestasi biasa

Gunakan langkah Tunggu untuk melengahkan pengambilan data

Langkah tunggu membolehkan anda menjeda sesebuah aliran kerja bagi tempoh masa yang ditentukan, namun langkah tunggu ini juga boleh digunakan untuk mengoptimumkan aliran kerja anda. Setiap langkah tunggu akan membahagikan pelaksanaan aliran kerja anda kepada fasa yang berasingan secara berkesan. Apabila aliran kerja dijalankan, proses ini akan mengambil data yang diperlukan secara automatik setakat langkah tunggu yang pertama (dan mengambil data semula selepas langkah tunggu untuk baki aliran kerja tersebut).

Jika sesuatu aliran kerja menggunakan pencetus volum tinggi dan mengambil banyak data, tetapi hanya sesekali mengambil tindakan, maka anda boleh meletakkan sebarang data atau logik kompleks selepas satu set pasangan syarat dan langkah tunggu. Contohnya:

  1. Pencetus: Kuantiti inventori varian produk berubah.
  2. Syarat: Semak jika produk tersebut ada dalam koleksi.
  3. Jika benar, Tindakan: Tunggu 2 saat.
  4. Tindakan: Hantar e-mel kepada pelanggan (bersama sejumlah data yang besar).

Dalam contoh ini, data yang diperlukan untuk langkah 4 hanya ditanyakan selepas langkah Tunggu selesai. Jika syarat tersebut lazimnya palsu, maka aliran kerja ini akan berjalan dengan lebih pantas dan efisien.

Apa yang tidak patut dioptimumkan

Menggunakan data yang sama dalam berbilang tindakan

Apabila anda menggunakan medan yang sama dalam berbilang langkah, Flow menganalisis penggunaan medan tersebut dan hanya mengambil data tersebut sebanyak sekali sahaja. Ini bermakna anda boleh menggunakan data tersebut seberapa banyak yang anda mahu tanpa perlu risau tentang isu prestasinya.