ส่วนขยาย Magento ตัวไหนที่ทำให้ร้านของคุณช้าลง?
เลิกเดาสุ่มได้แล้ว
ร้านที่ทำงานช้า มักเกิดจากการมีส่วนขยาย (extensions) มากเกินไป คนส่วนใหญ่มักจะไล่ปิดทีละตัวเพื่อหาปัญหา แต่นี่ไม่ใช่การดีบั๊ก (debugging) แต่มันคือการเดาสุ่มบนเว็บไซต์ที่ใช้งานจริง
Magento 2 ช่วยให้คุณวัด "ต้นทุน" (cost) ของส่วนขยายได้ โดยคุณต้องตรวจสอบใน 4 ด้านนี้:
- Plugins: ทุกๆ plugin จะเพิ่มเลเยอร์ให้กับ request หากมี plugin จำนวนมากอยู่ในเส้นทางที่ต้องทำงานเร็ว (fast paths) จะทำให้ request ช้าลง
- Observers: Observer ที่ผูกกับ event ทั่วไปจะทำงานในทุกๆ หน้า
- Layout: Module ต่างๆ จะฉีด (inject) block เข้าไปใน container ส่วนกลาง ซึ่งสิ่งเหล่านี้จะทำงานแม้ว่าคุณจะไม่ได้ใช้งานมันก็ตาม
- Queries: การค้นหาข้อมูลเพิ่มเพียงหนึ่งครั้งต่อหนึ่งรายการ อาจทำให้เกิด query เพิ่มขึ้นหลายร้อยครั้งในหน้าเดียว
อย่าเดา ให้ใช้ profiler ที่มีมาให้เพื่อหาความจริง
รันคำสั่งนี้:
bin/magento dev:profiler:enable
โหลดหน้าที่ทำงานช้า แล้วมองหา method ที่ถูกเรียกใช้งานบ่อยเกินไป หากมี method ใดถูกเรียกถึง 1,400 ครั้ง นั่นคือปัญหาแล้ว
เพื่อข้อมูลที่แม่นยำยิ่งขึ้น ให้ใช้ Blackfire, Xdebug หรือ New Relic โดย Blackfire จะแสดงให้เห็นชัดเจนว่า vendor namespace แต่ละตัวใช้เวลาไปเท่าไหร่
คุณยังสามารถหาจุดที่ module เข้าไปเชื่อมต่อ (hook) ได้ด้วยการค้นหาไฟล์ของคุณ:
เพื่อหา plugins:
grep -rl "<plugin" vendor/*/module-*/etc/ app/code/*/*/etc/
เพื่อหา observers:
grep -rl "<observer" vendor/*/module-*/etc/ app/code/*/*/etc/
เมื่อคุณพบตัวต้องสงสัยแล้ว ให้ใช้วิธีการทางวิทยาศาสตร์:
- วัดความเร็วของหน้าเว็บในขณะที่เปิดใช้งาน module นั้นอยู่
- ปิดการใช้งาน module ตัวนั้น
- วัดความเร็วของหน้าเว็บอีกครั้ง
ผลต่างที่ได้คือต้นทุนที่แท้จริงของ module นั้น
เมื่อคุณพบ module ที่ทำงานช้า คุณมี 3 ทางเลือก:
- เปลี่ยนขอบเขต (Change the scope): ใช้
di.xmlเพื่อจำกัดการทำงานของ plugin ให้เฉพาะเจาะจงในบางพื้นที่เท่านั้น - เปลี่ยนตรรกะ (Replace the logic): เขียน module ขนาดเล็ก (thin module) ของคุณเองเพื่อแทนที่ around plugin ที่ทำงานหนักเกินไป
- ลบทิ้ง (Remove it): หากต้นทุนที่เสียไปสูงกว่าคุณค่าที่ได้รับ ให้ลบทิ้งเสีย
เลิกปฏิบัติกับเรื่องประสิทธิภาพเหมือนเป็นเรื่องเล่าต่อๆ กันมา แต่จงใช้ข้อมูลในการแก้ไขร้านของคุณ
Source: https://dev.to/iamrobindhiman/which-magento-extension-is-slowing-you-down-stop-guessing-1mj3