اپنے Shopify Flow ورک فلو کو بہتر بنانا
جب آپ ایک ورک فلو بناتے ہیں، تو آپ یہ یقینی بنانا چاہتے ہیں کہ وہ ہر ممکن حد تک مؤثر طریقے سے رن کرے۔ یہ دستاویز ان صورتحال کا خاکہ پیش کرتی ہے جو آپ کے ورک فلو کے محدود ہونے (throttled) یا API کی حدیں ختم ہونے کا سبب بن سکتی ہیں، اور ان مسائل کو حل کرنے یا ان کا متبادل طریقہ اختیار کرنے کے بارے میں تجاویز فراہم کرتی ہے۔
عام کارکردگی کے مسائل
یہ سیکشن ان عام صورتحال کا خاکہ پیش کرتا ہے جو آپ کے ورک فلو میں کارکردگی کے مسائل کا سبب بن سکتی ہیں۔ ایک ہی وقت میں ایک سے زیادہ صورتحال کا ہونا ممکن ہے، جس سے اس بات کا امکان بڑھ جائے گا کہ آپ کو کارکردگی کے مسائل نظر آئیں۔ ایڈیٹر کی کنفیگریشن یا شرح کو محدود کرنے سے متعلق خرابیوں کے لیے، ٹربل شوٹنگ گائیڈ استعمال کریں۔
زیادہ والیوم والے ٹرگر
زیادہ والیوم والے ٹرگر وہ ہوتے ہیں جہاں بنیادی ایونٹ اکثر ہوتا ہے۔ مثال کے طور پر، ٹرگر پروڈکٹ کے ویرینٹ کی انوینٹری کی مقدار تبدیل ہو گئی شاپ میں ہر انوینٹری کی تبدیلی کے لیے رن کرتا ہے۔ ٹرگر کا والیوم آپ کے ورک فلو کے کسی بھی مسئلے پر ضرب کے طور پر کام کرتا ہے۔ مثال کے طور پر، اگر ایک ورک فلو 100 پروڈکٹ بازیافت کرتا ہے، اور وہ فی منٹ 1000 بار رن کرتا ہے، تو وہ فی منٹ 100,000 پروڈکٹ بازیافت کرے گا۔ اس سے کارکردگی کے مسائل پیدا ہو سکتے ہیں۔
حل: کم ڈیٹا کا استعمال کر کے اپنے ورک فلو کو بہتر بنائیں، یا اپنے ورک فلو کو تقسیم کرنے کے لیے انتظار کے اقدامات کا استعمال کریں۔
ایک ہی ٹرگر کا استعمال کرنے والے بہت سے ورک فلو
Flow میں، آپ ایک ہی ٹرگر کا استعمال کر کے ایک سے زیادہ ورک فلو بنا سکتے ہیں۔ جب کوئی ایونٹ ہوتا ہے تو یہ ورک فلو ایک دوسرے کے متوازی رن کریں گے۔ اگر آپ مندرجہ ذیل وجوہات کی بنا پر ایک ہی ٹرگر کا استعمال کر کے بہت سارے ورک فلو رن کرتے ہیں تو یہ مسئلہ بن سکتا ہے:
- ورک فلو ایک دوسرے کے ساتھ متصادم ہو سکتے ہیں۔
- ورک فلو بیک وقت ڈیٹا بازیافت کرنے اور API کو کال کرنے کی کوشش کر رہے ہیں، اور Shopify API کی حدود کے لحاظ سے آپ کی شاپ محدود ہے کہ یہ ایک ساتھ کتنی درخواستوں کو ہینڈل کر سکتی ہے۔
حل: ایک ہی ٹرگر کا استعمال کرنے والے ورک فلو کو یکجا کر کے سنگل ورک فلو بنائیں۔ یہ آپ کو یہ کنٹرول کرنے کی بھی اجازت دیتا ہے کہ ان میں سے ہر ایک کب ایگزیکیوٹ کرے، تاکہ وہ ایک دوسرے کے ساتھ متصادم نہ ہوں۔ ورک فلو کو یکجا کرنا خاص طور پر مفید ہے اگر ورک فلو زیادہ ڈیٹا بازیافت نہیں کرتے ہیں یا ان کے ذریعے بازیافت کردہ ڈیٹا ایک جیسا ہوتا ہے۔ اگر ورک فلو بہت سا مختلف ڈیٹا بازیافت کرتے ہیں، تو آپ کو معلوم ہو سکتا ہے کہ انہیں الگ رکھنے کے نتیجے میں کارکردگی بہتر ہوتی ہے۔
فہرستوں یا غلط ڈیٹا کا استعمال کرنا
جب آپ کوئی ورک فلو بناتے ہیں، تو آپ آبجیکٹ کی فہرست استعمال کر سکتے ہیں، جیسے کہ پروڈکٹ یا آرڈر۔ اگر آپ آبجیکٹ کی فہرست استعمال کرتے ہیں، تو Flow اس فہرست کے تمام آبجیکٹ لے آئے گا۔ اگر فہرست میں بہت زیادہ ڈیٹا ہو تو اس سے مسئلہ ہو سکتا ہے۔
ایک اور عام مسئلہ غلط ڈیٹا کو غلطی سے منتخب کرنا ہے۔ مثال کے طور پر، آرڈر پر پروڈکٹ کا ڈیٹا چیک کرنے کے لیے، آپ نے order / line items / product / tags کے بجائے order / publication / products / tags منتخب کر لیا ہو۔ پہلا نتیجہ عام طور پر غلط ہوتا ہے، کیونکہ یہ پبلیکیشن کے لیے تمام پروڈکٹ کو لے آتا ہے جبکہ اصل مقصد آرڈر پر پروڈکٹ کو چیک کرنا ہوتا ہے۔ اتنی بڑی فہرست منتخب کرنے سے پرفارمنس کے مسائل پیدا ہو سکتے ہیں اور غلط فہرست کے انتخاب سے آپ کی آٹومیشن غلط کام کر سکتی ہے۔
حل: احتیاط سے اس ڈیٹا کا انتخاب کریں جس کی آپ کو ضرورت ہے اور جب ضرورت نہ ہو تو فہرست کے استعمال سے گریز کریں۔ اپنے ورک فلو کو ٹیسٹ کریں تاکہ یہ یقینی بنایا جا سکے کہ وہ آپ کی توقع کے مطابق کام کر رہے ہیں۔
میٹا فیلڈ
انفرادی میٹا فیلڈ یا میٹا آبجیکٹ کا ڈیٹا لانے سے پرفارمنس کے مسائل پیدا نہیں ہونے چاہئیں۔ تاہم، ایک عام مسئلہ metafields فہرست کا انتخاب کرنا اور کسی ریسورس پر موجود تمام میٹا فیلڈ پر لوپ (loop) چلانا ہے۔ اگر کسی value فیلڈ میں بہت زیادہ ڈیٹا ہو، مثال کے طور پر، جب HTML آبجیکٹ استعمال کیے جائیں، تو اس کے نتیجے میں بہت زیادہ ڈیٹا پراسیس ہو سکتا ہے جس سے پرفارمنس کے مسائل پیدا ہونے کا امکان ہوتا ہے۔
حل: metafields کے بجائے metafield آبجیکٹ کا استعمال کریں۔
Get data ایکشن کا ضرورت سے زیادہ استعمال
Get data ایکشن استعمال کرنے والے ورک فلو، جیسے کہ Get order data، اس طرح بنائے گئے ہیں کہ وہ Get data ایکشن سے فی ورک فلو زیادہ سے زیادہ 100 آبجیکٹ لوٹائیں۔ 100 آبجیکٹ سے زیادہ ہونے پر پرفارمنس کے مسائل پیدا ہو سکتے ہیں۔
حل: ورک فلو کو زیادہ کثرت سے چلائیں تاکہ آپ کی کوئری (query) کو 100 سے زیادہ نتائج لوٹانے کی ضرورت نہ پڑے۔ بار بار کوئری کرنے کے بجائے اسی Get data ایکشن کو دوبارہ استعمال کریں۔
Get data ایکشن میں کوئری فلٹر کا نہ ہونا
Get data ایکشن Shopify API کو کال کرتے ہیں۔ اگر کوئی کوئری موجود نہ ہو، تو API یا تو تمام ریسورس لوٹائے گی یا کچھ بھی نہیں۔ اس سے پرفارمنس کے مسائل پیدا ہو سکتے ہیں، لیکن اس سے آپ کی شاپ میں غلط ایکشن بھی لیے جا سکتے ہیں جب آپ لوٹایا گیا ڈیٹا بعد میں ورک فلو میں استعمال کرتے ہیں۔
حل: اپنے Get data ایکشن میں ہمیشہ کوئری فلٹر شامل کریں۔
Get data ایکشن میں غلط کوئری فلٹر
Get data کوئری محدود تعداد میں کوئری فلٹر، ایک مخصوص سنٹیکس (syntax)، اور فلٹر میں استعمال ہونے والی مخصوص ویلیو کو سپورٹ کرتی ہے۔ غلط فلٹر، فلٹر کی ویلیو، یا سنٹیکس درج کرنے سے پوری کوئری کو نظر انداز کیا جا سکتا ہے، جس سے اس طرح کے مسائل پیدا ہو سکتے ہیں جیسے کوئی کوئری فلٹر موجود نہ ہو۔
حل: دستیاب کوئری فلٹر کی فہرست تلاش کرنے کے لیے Flow میں ایکشن کی جانب سے فراہم کردہ دستاویزات کا استعمال کریں۔ اپنے کوئری فلٹر کو ہمیشہ ٹیسٹ کریں تاکہ یہ یقینی بنایا جا سکے کہ وہ متوقع ڈیٹا لوٹاتے ہیں۔ لوٹائے گئے ڈیٹا کا جائزہ لینے کے لیے آپ Flow میں Log Output ایکشن استعمال کر سکتے ہیں، یا آپ Postman جیسے API کلائنٹ کے ذریعے یا ایپ GraphiQL کے ذریعے براہ راست Shopify Admin API کو کال کر سکتے ہیں۔
پرفارمنس کے عام مسائل کے لیے اضافی حل
ڈیٹا لانے میں تاخیر کے لیے Wait اسٹیپ کا استعمال کریں
Wait اسٹیپ آپ کو ایک مخصوص وقت کے لیے ورک فلو کو روکنے کی سہولت دیتے ہیں، لیکن wait اسٹیپ کو آپ کے ورک فلو کو بہتر بنانے کے لیے بھی استعمال کیا جا سکتا ہے۔ ہر wait اسٹیپ مؤثر طریقے سے آپ کے ورک فلو کے عمل کو الگ الگ مراحل میں تقسیم کرتا ہے۔ جب ورک فلو چلتا ہے، تو یہ خود بخود وہ ڈیٹا لے آتا ہے جو پہلے wait اسٹیپ تک درکار ہوتا ہے (اور باقی ورک فلو کے لیے wait اسٹیپ کے بعد دوبارہ ڈیٹا لاتا ہے)۔
اگر کوئی ورک فلو ہائی والیوم ٹرگر استعمال کرتا ہے اور بہت زیادہ ڈیٹا لاتا ہے، لیکن صرف کبھی کبھار ایکشن لے گا، تو آپ کسی بھی پیچیدہ ڈیٹا یا لاجک کو کنڈیشن اور wait اسٹیپ کے جوڑے کے بعد رکھ سکتے ہیں۔ مثال کے طور پر:
- ٹرگر: پروڈکٹ ویرینٹ کی انوینٹری کی مقدار تبدیل ہو گئی۔
- کنڈیشن: چیک کریں کہ آیا پروڈکٹ کسی کلیکشن میں موجود ہے۔
- اگر درست (true) ہو، تو ایکشن: 2 سیکنڈ انتظار کریں۔
- ایکشن: کسٹمر کو ای میل بھیجیں (بہت سارے ڈیٹا کے ساتھ)۔
اس مثال میں، اسٹیپ 4 کے لیے درکار ڈیٹا صرف Wait اسٹیپ کے مکمل ہونے کے بعد کوئری کیا جاتا ہے۔ اگر کنڈیشن عام طور پر غلط (false) ہوتی ہے، تو اس کا مطلب ہے کہ ورک فلو زیادہ تیزی اور مؤثر طریقے سے چلے گا۔
کن چیزوں کو آپٹیمائز نہیں کرنا چاہیے
ایک ہی ڈیٹا کو متعدد ایکشن میں استعمال کرنا
جب آپ ایک ہی فیلڈ کو ایک سے زیادہ اسٹیپ میں استعمال کرتے ہیں، تو Flow ان فیلڈ کے استعمال کا تجزیہ کرتا ہے اور وہ ڈیٹا صرف ایک بار لاتا ہے۔ اس کا مطلب ہے کہ آپ پرفارمنس کی فکر کیے بغیر جتنی بار چاہیں اس ڈیٹا کو استعمال کر سکتے ہیں۔