अपने Shopify Flow वर्कफ़्लों को ऑप्टिमाइज़ करना

जब आप कोई वर्कफ़्लो बनाते हैं, तो आप यह पक्का करना चाहते हैं कि वह जितना संभव हो उतना कुशलता से चले। यह दस्तावेज़ उन परिदृश्यों की रूपरेखा बताता है, जिनकी वजह से आपके वर्कफ़्लो थ्रॉटल हो सकते हैं या API सीमाएं समाप्त हो सकती हैं और उन समस्याओं को हल करने या उनके वर्कअराउंड के लिए सुझाव देता है।

आम परफ़ॉर्मेंस समस्याएं

यह सेक्शन उन आम परिदृश्यों की रूपरेखा बताता है, जो आपके वर्कफ़्लों में परफ़ॉर्मेंस संबंधी समस्याएं पैदा कर सकते हैं। एक ही समय में एक से ज़्यादा परिदृश्य होना संभव है, जिससे आपको परफ़ॉर्मेंस संबंधी समस्याएं दिखने की संभावना बढ़ जाएगी। एडिटर कॉन्फ़िगरेशन या रेट लिमिटिंग से संबंधित गड़बड़ियों के लिए, समस्या निवारण गाइड का उपयोग करें।

हाई वॉल्यूम ट्रिगर

हाई वॉल्यूम ट्रिगर वे होते हैं, जिनमें संबंधित ईवेंट बार-बार होता है। उदाहरण के लिए, प्रोडक्ट प्रकार की इन्वेंट्री मात्रा बदली गई ट्रिगर किसी स्टोर में हर इन्वेंट्री बदलाव के लिए चलता है। किसी ट्रिगर का वॉल्यूम आपके वर्कफ़्लो में किसी भी समस्या के लिए गुणक के रूप में काम करता है। उदाहरण के लिए, अगर कोई वर्कफ़्लो 100 प्रोडक्ट फ़ेच करता है और वह प्रति मिनट 1000 बार चलता है, तो वह प्रति मिनट 100,000 प्रोडक्ट फ़ेच कर रहा होगा। इससे परफ़ॉर्मेंस संबंधी समस्याएं हो सकती हैं।

समाधान: कम डेटा का उपयोग करके अपने वर्कफ़्लों को ऑप्टिमाइज़ करें, या अपने वर्कफ़्लो को विभाजित करने के लिए Wait स्टेप का उपयोग करें

एक ही ट्रिगर का उपयोग करने वाले कई वर्कफ़्लो

Flow में, आप एक ही ट्रिगर का उपयोग करके एक से ज़्यादा वर्कफ़्लो बना सकते हैं। जब ईवेंट होता है, तो ये वर्कफ़्लो एक-दूसरे के समानांतर चलेंगे। अगर आप एक ही ट्रिगर का उपयोग करके बहुत सारे वर्कफ़्लो चलाते हैं, तो यह निम्नलिखित कारणों से समस्याग्रस्त हो सकता है:

  • वर्कफ़्लो एक-दूसरे के साथ टकराव कर सकते हैं।
  • वर्कफ़्लो एक ही समय में डेटा फ़ेच करने और API को कॉल करने की कोशिश करते हैं और आपका स्टोर एक बार में जितने अनुरोधों को हैंडल कर सकता है, वह Shopify API सीमाओं द्वारा सीमित है।

समाधान: एक ही ट्रिगर का उपयोग करने वाले वर्कफ़्लो को एक ही वर्कफ़्लो में मिलाएं। यह आपको यह नियंत्रित करने की सुविधा भी देता है कि उनमें से प्रत्येक कब चलता है, ताकि वे एक-दूसरे से न टकराएं। वर्कफ़्लों को मिलाना खास तौर पर तब उपयोगी होता है, जब वर्कफ़्लो बहुत ज़्यादा डेटा प्राप्त नहीं करते हैं या उनके द्वारा प्राप्त किया गया डेटा समान होता है। अगर वर्कफ़्लो बहुत सारा अलग-अलग डेटा प्राप्त करते हैं, तो आप पा सकते हैं कि उन्हें अलग रखने से बेहतर परफ़ॉर्मेंस मिलती है।

सूचियों या गलत डेटा का उपयोग करना

जब आप कोई वर्कफ़्लो बनाते हैं, तो आप ऑब्जेक्ट की सूची, जैसे कि प्रोडक्ट या ऑर्डर का उपयोग कर सकते हैं। अगर आप ऑब्जेक्ट की सूची का उपयोग करते हैं, तो Flow सूची में मौजूद सभी ऑब्जेक्ट को फ़ेच करेगा। यह एक समस्या हो सकती है, जब सूची में बहुत सारा डेटा हो।

एक और आम समस्या गलती से गलत डेटा चुनना है। उदाहरण के लिए, किसी ऑर्डर पर प्रोडक्ट डेटा की जांच करने के लिए, हो सकता है कि आपने order / line items / product / tags के बजाय order / publication / products / tags को चुना हो। पहला परिणाम आमतौर पर गलत होता है, क्योंकि यह प्रकाशन के लिए सभी प्रोडक्ट को फ़ेच करता है, जबकि इसका उद्देश्य ऑर्डर पर प्रोडक्ट की जांच करना होता है। इतनी बड़ी सूची चुनने से परफ़ॉर्मेंस संबंधी समस्याएं हो सकती हैं और गलत सूची चुनने के कारण आपका ऑटोमेशन गलत काम कर सकता है।

समाधान: आपको जिस डेटा की ज़रूरत है, उसे सावधानी से चुनें और जब ज़रूरत न हो, तो सूचियों का उपयोग करने से बचें। यह पक्का करने के लिए अपने वर्कफ़्लों का परीक्षण करें कि वे वही कर रहे हैं, जिसकी आप उम्मीद करते हैं।

मेटाफ़ील्ड्स

किसी व्यक्तिगत मेटाफ़ील्ड या मेटा-ऑब्जेक्ट डेटा को फ़ेच करने से परफ़ॉर्मेंस संबंधी समस्याएं नहीं होनी चाहिए। हालांकि, एक आम समस्या metafields सूची को चुनना और किसी संसाधन पर सभी मेटाफ़ील्ड्स पर लूप चलाना है। अगर किसी value फ़ील्ड में बहुत सारा डेटा है, उदाहरण के लिए, जब HTML ऑब्जेक्ट का उपयोग किया जाता है, तो इसके परिणामस्वरूप बहुत सारा डेटा प्रोसेस हो सकता है और संभावित रूप से परफ़ॉर्मेंस संबंधी समस्याएं हो सकती हैं।

समाधान: metafields के बजाय metafield ऑब्जेक्ट का उपयोग करें।

Get data एक्शन का अत्यधिक उपयोग

Get data एक्शन का उपयोग करने वाले वर्कफ़्लो, जैसे कि ऑर्डर डेटा पाएं, Get data एक्शन से प्रति वर्कफ़्लो अधिकतम 100 ऑब्जेक्ट वापस करने के लिए डिज़ाइन किए गए हैं। 100 से ज़्यादा ऑब्जेक्ट होने पर परफ़ॉर्मेंस संबंधी समस्याएं हो सकती हैं।

समाधान: वर्कफ़्लो को ज़्यादा बार चलाएं, ताकि आपकी क्वेरी को 100 से ज़्यादा परिणाम वापस करने की ज़रूरत न पड़े। बार-बार क्वेरी करने के बजाय उसी Get data एक्शन का दोबारा उपयोग करें।

Get data एक्शन में कोई क्वेरी फ़िल्टर नहीं

Get data एक्शन, Shopify API को कॉल करते हैं। अगर कोई क्वेरी मौजूद नहीं है, तो API या तो सभी संसाधन लौटाएगा या कोई नहीं। इससे परफ़ॉर्मेंस संबंधी समस्याएं हो सकती हैं, लेकिन जब आप बाद में वर्कफ़्लो में लौटाए गए डेटा का उपयोग करते हैं, तो यह आपके स्टोर में गलत एक्शन लिए जाने का कारण भी बन सकता है।

समाधान: अपने Get data एक्शन में हमेशा क्वेरी फ़िल्टर शामिल करें।

Get data एक्शन में गलत क्वेरी फ़िल्टर

Get data क्वेरी, क्वेरी फ़िल्टर के एक सीमित सेट, एक विशिष्ट सिंटैक्स और फ़िल्टर में उपयोग किए जा सकने वाले मानों के एक विशिष्ट सेट का समर्थन करती हैं। गलत फ़िल्टर, फ़िल्टर मान या सिंटैक्स दर्ज करने से पूरी क्वेरी को अनदेखा किया जा सकता है, जिससे कोई क्वेरी फ़िल्टर मौजूद न होने जैसी समस्याएं हो सकती हैं।

समाधान: उपलब्ध क्वेरी फ़िल्टर की सूची खोजने के लिए Flow में एक्शन द्वारा दिए गए दस्तावेज़ का उपयोग करें। हमेशा यह पक्का करने के लिए अपने क्वेरी फ़िल्टर का परीक्षण करें कि वे अपेक्षित डेटा लौटाते हैं। आप लौटाए गए डेटा की समीक्षा करने के लिए Flow में लॉग आउटपुट एक्शन का उपयोग कर सकते हैं या आप Postman जैसे API क्लाइंट के माध्यम से या GraphiQL ऐप के माध्यम से सीधे Shopify Admin API को कॉल कर सकते हैं।

आम परफ़ॉर्मेंस समस्याओं के लिए अतिरिक्त समाधान

डेटा फ़ेच करने में देरी करने के लिए Wait स्टेप का उपयोग करें

Wait स्टेप आपको एक निर्दिष्ट समय के लिए वर्कफ़्लो को रोकने की सुविधा देते हैं, लेकिन Wait स्टेप का उपयोग आपके वर्कफ़्लों को ऑप्टिमाइज़ करने के लिए भी किया जा सकता है। प्रत्येक Wait स्टेप आपके वर्कफ़्लो के एक्ज़ीक्यूशन को अलग-अलग चरणों में प्रभावी ढंग से विभाजित करता है। जब वर्कफ़्लो चलता है, तो यह पहले Wait स्टेप तक आवश्यक डेटा को अपने आप फ़ेच करता है (और बाकी वर्कफ़्लो के लिए Wait स्टेप के बाद फिर से डेटा फ़ेच करता है)।

अगर कोई वर्कफ़्लो हाई-वॉल्यूम ट्रिगर का उपयोग करता है और बहुत सारा डेटा फ़ेच करता है, लेकिन कभी-कभार ही एक्शन लेगा, तो आप किसी भी जटिल डेटा या लॉजिक को एक शर्त और Wait स्टेप के जोड़े के बाद रख सकते हैं। उदाहरण के लिए:

  1. ट्रिगर: प्रोडक्ट प्रकार की इन्वेंट्री मात्रा बदली गई।
  2. शर्त: जांचें कि प्रोडक्ट किसी संग्रहण में है या नहीं।
  3. अगर सही है, तो एक्शन: 2 सेकंड प्रतीक्षा करें।
  4. एक्शन: ग्राहक को एक ईमेल भेजें (बहुत सारे डेटा के साथ)।

इस उदाहरण में, चरण 4 के लिए आवश्यक डेटा को केवल Wait स्टेप पूरा होने के बाद ही क्वेरी किया जाता है। अगर शर्त आमतौर पर गलत होती है, तो इसका मतलब है कि वर्कफ़्लो ज़्यादा तेज़ी से और ज़्यादा कुशलता से चलेगा।

क्या ऑप्टिमाइज़ नहीं करना है

कई एक्शन में एक ही डेटा का उपयोग करना

जब आप कई स्टेप में एक ही फ़ील्ड का उपयोग करते हैं, तो Flow उन फ़ील्ड के उपयोग का विश्लेषण करता है और उस डेटा को केवल एक बार फ़ेच करता है। इसका मतलब है कि आप परफ़ॉर्मेंस की चिंता किए बिना जितनी बार चाहें डेटा का उपयोग कर सकते हैं।