การเพิ่มประสิทธิภาพขั้นตอนการทำงานของ Shopify Flow

เมื่อคุณสร้างขั้นตอนการทำงาน คุณย่อมต้องการให้แน่ใจว่าขั้นตอนการทำงานนั้นดำเนินไปอย่างมีประสิทธิภาพที่สุด เอกสารฉบับนี้สรุปสถานการณ์ที่อาจทำให้ขั้นตอนการทำงานของคุณถูกจำกัดความเร็วหรือใช้ขีดจำกัดของ API จนหมด ตลอดจนเคล็ดลับเกี่ยวกับวิธีแก้ไขหรือวิธีแก้ปัญหาชั่วคราวสำหรับปัญหาเหล่านั้น

ปัญหาด้านประสิทธิภาพที่พบบ่อย

ส่วนนี้สรุปสถานการณ์ทั่วไปที่อาจก่อให้เกิดปัญหาด้านประสิทธิภาพในขั้นตอนการทำงานของคุณ คุณอาจพบหลายสถานการณ์พร้อมกันได้ ซึ่งจะเพิ่มโอกาสที่คุณจะสังเกตเห็นปัญหาด้านประสิทธิภาพ สำหรับข้อผิดพลาดที่เกี่ยวข้องกับการกำหนดค่าเครื่องมือแก้ไขหรือการจำกัดอัตรา โปรดใช้คู่มือการแก้ไขปัญหา

ทริกเกอร์ปริมาณสูง

ทริกเกอร์ปริมาณสูงคือทริกเกอร์ที่เหตุการณ์พื้นฐานเกิดขึ้นบ่อยครั้ง ตัวอย่างเช่น ทริกเกอร์ปริมาณสินค้าคงคลังของตัวเลือกสินค้ามีการเปลี่ยนแปลง จะทำงานทุกครั้งที่มีการเปลี่ยนแปลงสินค้าคงคลังในร้านค้า ปริมาณของทริกเกอร์จะทำหน้าที่เป็นตัวคูณสำหรับปัญหาใดๆ ในขั้นตอนการทำงานของคุณ ตัวอย่างเช่น หากขั้นตอนการทำงานดึงข้อมูลสินค้า 100 รายการและทำงาน 1,000 ครั้งต่อนาที ขั้นตอนการทำงานดังกล่าวจะดึงข้อมูลสินค้า 100,000 รายการต่อนาที ซึ่งอาจก่อให้เกิดปัญหาด้านประสิทธิภาพได้

วิธีแก้ไข: เพิ่มประสิทธิภาพขั้นตอนการทำงานของคุณโดยใช้ข้อมูลน้อยลง หรือใช้ขั้นตอนการรอเพื่อแบ่งพาร์ติชันขั้นตอนการทำงานของคุณ

ขั้นตอนการทำงานจำนวนมากที่ใช้ทริกเกอร์เดียวกัน

ใน Flow คุณสามารถสร้างขั้นตอนการทำงานได้มากกว่าหนึ่งขั้นตอนโดยใช้ทริกเกอร์เดียวกัน ขั้นตอนการทำงานเหล่านี้จะทำงานพร้อมกันเมื่อเกิดเหตุการณ์ขึ้น ซึ่งอาจเป็นปัญหาได้หากคุณใช้ขั้นตอนการทำงานจำนวนมากเกินไปโดยใช้ทริกเกอร์เดียวกันด้วยเหตุผลดังต่อไปนี้

  • ขั้นตอนการทำงานอาจขัดแย้งกันเอง
  • ขั้นตอนการทำงานพยายามดึงข้อมูลและเรียกใช้ API ในเวลาเดียวกัน และร้านค้าของคุณมีขีดจำกัดในการจัดการคำขอพร้อมกันโดยขีดจำกัดของ Shopify API

วิธีแก้ไข: รวมขั้นตอนการทำงานที่ใช้ทริกเกอร์เดียวกันไว้ในขั้นตอนการทำงานเดียว ซึ่งจะช่วยให้คุณสามารถควบคุมได้ว่าแต่ละขั้นตอนจะทำงานเมื่อใด เพื่อไม่ให้ขั้นตอนการทำงานขัดแย้งกัน การรวมขั้นตอนการทำงานมีประโยชน์อย่างยิ่งหากขั้นตอนการทำงานไม่ได้ดึงข้อมูลจำนวนมาก หรือข้อมูลที่ดึงนั้นเป็นข้อมูลเดียวกัน หากขั้นตอนการทำงานดึงข้อมูลที่แตกต่างกันจำนวนมาก คุณอาจพบว่าการแยกขั้นตอนการทำงานออกจากกันจะส่งผลให้มีประสิทธิภาพดีขึ้น

การใช้รายการหรือข้อมูลที่ไม่ถูกต้อง

เมื่อคุณสร้างขั้นตอนการทำงาน คุณอาจใช้รายการอ็อบเจกต์ เช่น สินค้าหรือคำสั่งซื้อ หากคุณใช้รายการอ็อบเจกต์ Flow จะดึงข้อมูลอ็อบเจกต์ทั้งหมดในรายการ ซึ่งอาจเป็นปัญหาได้เมื่อรายการมีข้อมูลจำนวนมาก

ปัญหาที่พบบ่อยอีกประการหนึ่งคือการเลือกข้อมูลผิดโดยไม่ตั้งใจ ตัวอย่างเช่น หากต้องการตรวจสอบข้อมูลสินค้าในคำสั่งซื้อ คุณอาจเลือก order / publication / products / tags แทน order / line items / product / tags โดยปกติแล้วผลลัพธ์แรกจะไม่ถูกต้อง เนื่องจากระบบจะดึงข้อมูลสินค้าทั้งหมดสำหรับสิ่งพิมพ์ ทั้งที่ความตั้งใจคือการตรวจสอบสินค้าในคำสั่งซื้อ การเลือกรายการขนาดใหญ่เช่นนี้อาจก่อให้เกิดปัญหาด้านประสิทธิภาพ และการเลือกรายการที่ไม่ถูกต้องอาจส่งผลให้การทำงานอัตโนมัติของคุณทำงานผิดพลาดได้

วิธีแก้ไข: เลือกข้อมูลที่คุณต้องการอย่างระมัดระวังและหลีกเลี่ยงการใช้รายการเมื่อไม่จำเป็น โปรดทดสอบขั้นตอนการทำงานของคุณเพื่อให้แน่ใจว่าทำงานได้ตามที่คุณคาดหวัง

เมตาฟิลด์

การดึงข้อมูลเมตาฟิลด์หรือเมตาอ็อบเจกต์แต่ละรายการไม่ควรก่อให้เกิดปัญหาด้านประสิทธิภาพ อย่างไรก็ตาม ปัญหาที่พบบ่อยคือการเลือกรายการ metafields และวนลูปเมตาฟิลด์ทั้งหมดบนรีซอร์ส หากช่อง value มีข้อมูลจำนวนมาก ตัวอย่างเช่น เมื่อใช้อ็อบเจกต์ HTML อาจส่งผลให้มีการประมวลผลข้อมูลจำนวนมากและอาจก่อให้เกิดปัญหาด้านประสิทธิภาพได้

วิธีแก้ไข: ใช้อ็อบเจกต์ metafield แทน metafields

การใช้การดำเนินการ 'รับข้อมูล' มากเกินไป

ขั้นตอนการทำงานที่ใช้การดำเนินการ รับข้อมูล เช่น รับข้อมูลคำสั่งซื้อ ได้รับการออกแบบมาเพื่อส่งคืนอ็อบเจกต์สูงสุด 100 รายการต่อขั้นตอนการทำงานจากการดำเนินการ รับข้อมูล การมีอ็อบเจกต์เกิน 100 รายการอาจก่อให้เกิดปัญหาด้านประสิทธิภาพได้

วิธีแก้ไข: เรียกใช้ขั้นตอนการทำงานให้บ่อยขึ้น เพื่อให้การค้นหาของคุณไม่จำเป็นต้องส่งคืนผลลัพธ์เกิน 100 รายการ ใช้การดำเนินการ รับข้อมูล เดิมซ้ำแทนการค้นหาซ้ำๆ

ไม่มีตัวกรองการค้นหาในการดำเนินการ 'รับข้อมูล'

การดำเนินการ รับข้อมูล จะเรียกใช้ Shopify API หากไม่มีการค้นหาอยู่ API จะส่งคืนรีซอร์สทั้งหมดหรือไม่มีเลย ซึ่งอาจก่อให้เกิดปัญหาด้านประสิทธิภาพ แต่ก็อาจทำให้เกิดการดำเนินการที่ไม่ถูกต้องในร้านค้าของคุณได้เช่นกันเมื่อคุณใช้ข้อมูลที่ส่งคืนในภายหลังในขั้นตอนการทำงาน

วิธีแก้ไข: รวมตัวกรองการค้นหาไว้ในการดำเนินการ รับข้อมูล ของคุณเสมอ

ตัวกรองการค้นหาไม่ถูกต้องในการดำเนินการ 'รับข้อมูล'

การค้นหาของ รับข้อมูล รองรับชุดตัวกรองการค้นหาที่จำกัด ไวยากรณ์เฉพาะ และชุดค่าเฉพาะที่สามารถใช้ในตัวกรองได้ การป้อนตัวกรอง ค่าตัวกรอง หรือไวยากรณ์ที่ไม่ถูกต้องอาจทำให้การค้นหาทั้งหมดถูกละเว้น ซึ่งอาจก่อให้เกิดปัญหาคล้ายกับกรณีที่ไม่มีตัวกรองการค้นหา

วิธีแก้ไข: ใช้เอกสารประกอบที่การดำเนินการใน Flow จัดเตรียมไว้ให้เพื่อค้นหารายการตัวกรองการค้นหาที่มีอยู่ ทดสอบตัวกรองการค้นหาของคุณเสมอเพื่อให้แน่ใจว่าส่งคืนข้อมูลที่คาดหวัง คุณสามารถใช้การดำเนินการส่งออกบันทึกใน Flow เพื่อตรวจสอบข้อมูลที่ส่งคืน หรือคุณสามารถเรียกใช้ Shopify Admin API ได้โดยตรงผ่านไคลเอนต์ API เช่น Postman หรือผ่านแอป GraphiQL

วิธีแก้ไขเพิ่มเติมสำหรับปัญหาด้านประสิทธิภาพที่พบบ่อย

ใช้ขั้นตอน 'รอ' เพื่อหน่วงเวลาการดึงข้อมูล

ขั้นตอนการรอช่วยให้คุณสามารถหยุดขั้นตอนการทำงานชั่วคราวตามระยะเวลาที่กำหนดได้ แต่ขั้นตอนการรอยังสามารถใช้เพื่อเพิ่มประสิทธิภาพขั้นตอนการทำงานของคุณได้อีกด้วย ขั้นตอนการรอแต่ละขั้นตอนจะแบ่งการดำเนินการของขั้นตอนการทำงานของคุณออกเป็นระยะต่างๆ อย่างมีประสิทธิภาพ เมื่อขั้นตอนการทำงานเริ่มทำงาน ระบบจะดึงข้อมูลที่จำเป็นโดยอัตโนมัติจนถึงขั้นตอนการรอแรก (และดึงข้อมูลอีกครั้งหลังจากขั้นตอนการรอสำหรับส่วนที่เหลือของขั้นตอนการทำงาน)

หากขั้นตอนการทำงานใช้ทริกเกอร์ปริมาณสูงและดึงข้อมูลจำนวนมาก แต่จะดำเนินการเป็นครั้งคราวเท่านั้น คุณสามารถใส่ข้อมูลหรือตรรกะที่ซับซ้อนใดๆ หลังจากการจับคู่เงื่อนไขและขั้นตอนการรอได้ ตัวอย่างเช่น

  1. ทริกเกอร์: ปริมาณสินค้าคงคลังของตัวเลือกสินค้ามีการเปลี่ยนแปลง
  2. เงื่อนไข: ตรวจสอบว่าสินค้าอยู่ในคอลเลกชันหรือไม่
  3. หากเป็นจริง, การดำเนินการ: รอ 2 วินาที
  4. การดำเนินการ: ส่งอีเมลถึงลูกค้า (พร้อมข้อมูลจำนวนมาก)

ในตัวอย่างนี้ ระบบจะค้นหาข้อมูลที่จำเป็นสำหรับขั้นตอนที่ 4 หลังจากที่ขั้นตอนการรอเสร็จสิ้นแล้วเท่านั้น หากโดยปกติแล้วเงื่อนไขเป็นเท็จ หมายความว่าขั้นตอนการทำงานจะทำงานได้เร็วขึ้นและมีประสิทธิภาพมากขึ้น

สิ่งที่ไม่ควรเพิ่มประสิทธิภาพ

การใช้ข้อมูลเดียวกันในการดำเนินการหลายอย่าง

เมื่อคุณใช้ช่องเดียวกันในหลายขั้นตอน Flow จะวิเคราะห์การใช้งานช่องเหล่านั้นและดึงข้อมูลนั้นเพียงครั้งเดียว ซึ่งหมายความว่าคุณสามารถใช้ข้อมูลได้หลายครั้งตามต้องการโดยไม่ต้องกังวลเกี่ยวกับประสิทธิภาพ