วิธีเพิ่มประสิทธิภาพสูงสุดด้วย Magento 2 บทสัมภาษณ์กับ Max Pronko

เผยแพร่แล้ว: 2017-01-17

max-ava

Max Pronko เป็นหนึ่งในผู้เชี่ยวชาญด้านวีโอไอพีที่มือใหม่ต้องติดตาม เขาเป็นผู้เชี่ยวชาญวีโอไอพีและผู้พูดในที่สาธารณะ เป็นผู้พัฒนาที่ผ่านการรับรองจากวีโอไอพี และบล็อกเกอร์ Magento 2 ยอดนิยม

ด้วยประสบการณ์ 10 ปีในการพัฒนาซอฟต์แวร์และการให้คำปรึกษาใน Magento Max ประสบความสำเร็จในการออกแบบและใช้งานผลิตภัณฑ์คุณภาพสูงตั้งแต่ขนาดกลางจนถึงขนาดใหญ่

ติดตามแม็กซ์บน Twitter

เมื่อเร็วๆ นี้ Max ได้ไปพบกับ Magento Hungary และนำเสนอ กรณีการใช้งานจริงของการเพิ่มประสิทธิภาพประสิทธิภาพใน ประเด็นสำคัญ ของ Magento 2 ในเรื่องนี้ เราขอเริ่มการสัมภาษณ์ด้วยคำถามสองสามข้อที่เกี่ยวข้องโดยตรงกับการนำเสนอนี้

กรณีการใช้งานจริงของการเพิ่มประสิทธิภาพใน magento 2 จาก Max Pronko

ส่วนที่ 1: ความท้าทายเกี่ยวกับส่วนขยาย Magento ทั่วไป

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

นาตาลี: โดยรวมแล้ว คุณจะให้คะแนนคุณภาพโค้ดของส่วนขยายปาร์ตี้ 3 มิติและวิธีที่ส่วนขยายอาจส่งผลต่อการโหลดของเซิร์ฟเวอร์ได้อย่างไร

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

อย่างที่คุณอาจทราบ ฉันชอบตรวจสอบโค้ดเนื่องจากเหตุผลหลายประการ:

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

95% ของส่วนขยายของบุคคลที่สามต้องการการตรวจสอบโค้ดอย่างละเอียดและคำแนะนำในการปรับปรุงโค้ด

ฉันได้ทำการตรวจสอบโค้ดส่วนขยายของบุคคลที่สามมาเป็นเวลาประมาณ 2 ปีแล้ว ขออภัย ฉันไม่สามารถพูดได้ว่าฉันพอใจกับผลลัพธ์ที่ได้รับ: 95% ของส่วนขยายของบุคคลที่สามต้องการการตรวจสอบโค้ดอย่างละเอียดและคำแนะนำในการปรับปรุง ให้ฉันเงียบสุด ๆ เกี่ยวกับมาตรฐานการเข้ารหัส

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

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

ฉันมีโอกาสได้ตรวจทานส่วนขยายประมาณ 60 รายการรวมทั้งส่วนขยายแบบชำระเงินและแบบฟรี ดังนั้นการให้คะแนนของฉันจึงอิงตามตัวเลขนี้ แน่นอนว่ามีส่วนขยายที่ฉันอาจแนะนำให้ใช้

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

ฉันไม่เคยเห็นการใช้ คลาส Proxy ในส่วนขยายของบุคคลที่สาม อย่างไรก็ตาม อาจลดเวลาของการเริ่มต้นวัตถุแบบเรียกซ้ำ

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

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

แม็กซ์: เป็นความคิดที่ดีที่จะทดสอบส่วนขยายของคุณกับ Magento 2 นอกสภาพแวดล้อมในเครื่อง โดยเฉพาะที่ใดที่หนึ่งในระบบคลาวด์ ทุกวันนี้ การ มีเซิร์ฟเวอร์เสมือนจาก DigitalOcean หรือ AWS นั้นไม่แพงเลยในราคา $5-10 และเรียกใช้การทดสอบผู้ใช้แบบ end-to-end ขั้นพื้นฐาน อย่างน้อยก็อาจแสดงความแตกต่างด้านประสิทธิภาพที่ค่อนข้างดีเมื่อเปรียบเทียบกับรุ่น Magento 2.x ที่พร้อมใช้งานทันที

ส่วนที่ 2: การเพิ่มประสิทธิภาพ M2

นาตาลี: คุณพูดอะไรเกี่ยวกับลักษณะเฉพาะของบล็อกแคช (ควรใช้/หลีกเลี่ยงอะไรดีกว่าในคีย์แคช)

สูงสุด: Magento 2 Community Edition มาพร้อมกับการสนับสนุนพร็อกซีเซิร์ฟเวอร์วานิช เหมาะอย่างยิ่งสำหรับผู้ค้าทุกรายที่ไม่ต้องกังวลกับผู้เข้าชมครั้งแรกเมื่อแคชไม่พร้อม บล็อกแคชมีผลกับหน้าที่ไม่ได้จัดเก็บไว้ในวานิช คุณอาจคาดหวังว่าจะไม่มีสารเคลือบเงาบนหน้าต่างๆ เช่น บัญชีลูกค้า การค้นหาแคตตาล็อก ตะกร้าสินค้า

คีย์แคชที่เหมาะสมต่อบล็อกมีความสำคัญมากสำหรับการสร้างรายการแคชที่เหมาะสม และเพิ่มจำนวนแคชในการจัดเก็บแบ็กเอนด์ เช่น Redis ตามหลักการแล้ว เอนทิตีทั้งหมดที่เกี่ยวข้องกับการเรนเดอร์ส่วนหน้าควรใช้ อินเทอร์เฟซ Magento\Framework\DataObject\IdentityInterface ซึ่งมาพร้อมกับ เมธอด getIdentities() วิธีนี้มีประโยชน์มากหากคุณต้องการคอมไพล์คีย์แคชที่เหมาะสมสำหรับบล็อกแคช

นาตาลี: มีอะไรเกี่ยวกับการเพิ่มประสิทธิภาพการสืบค้น SQL ไหม

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

ส่วนที่ 3: Magento 2 ค้นหา

Magento 2 สามารถอวดว่ามีการค้นหาแบบสำเร็จรูปที่ดีกว่า M1 แต่ยังคงไม่รองรับการสืบค้นแบบรวม การสะกดผิด การแก้ไขอัตโนมัติ คำพ้องความหมาย นอกจากนี้ การค้นหา M2 จะไม่สแกนหมวดหมู่และหน้า CMS

2017-01-17_15-26-38

นาตาลี: อะไรคือวิธีที่ดีที่สุดในการปรับปรุงการค้นหาในรุ่น CE: ส่วนขยายหรือเครื่องมือค้นหาภายนอก

แม็กซ์: ฉันพิจารณาใช้ Elasticsearch สำหรับ Magento 2 Community Edition แน่นอนว่าต้องมีการพัฒนาไม่ว่าจะภายในองค์กรหรือใช้ส่วนขยายของบุคคลที่สาม สำหรับหนึ่งในโครงการ Magento 2 เราได้ใช้การค้นหาในตัวพร้อมการกำหนดค่าเพิ่มเติม เช่น คำพ้องความหมายและการเปลี่ยนเส้นทางไปยังหน้า Landing Page สำหรับคำค้นหาทั่วไป อย่างไรก็ตาม นี่เป็นวิธีแก้ปัญหาระยะสั้น ฉันจะใช้บริการจากภายนอก

นาตาลี: พูดถึงเสิร์ชเอ็นจิ้นภายนอก อันไหนดีกว่าสำหรับเว็บไซต์ข้อมูลขนาดเล็ก/กลาง/ใหญ่: Solr, Sphinx หรือ Elasticsearch (หรืออย่างอื่น)

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

นาตาลี: คุณแนะนำส่วนขยายการค้นหาที่สามารถปรับปรุงฟังก์ชันเริ่มต้นได้ไหม

Max: ฉันมีประสบการณ์ในการตรวจสอบโมดูล AutoComplete สำหรับ Magento 2 ที่สร้างโดย MageWorx ปรับปรุงประสบการณ์ผู้ใช้อย่างมากเมื่อเทียบกับฟังก์ชันคำแนะนำอัตโนมัติของ Magento 2 Community Edition ที่เป็นค่าเริ่มต้น โมดูลการทำให้สมบูรณ์อัตโนมัติของ MageWorx จะเพิ่มการแปลงและการขายให้กับผู้ค้ามากขึ้น ในส่วนของการนำโค้ดไปใช้ คะแนนของฉันคือ 4.5 จาก 5 มีการปรับปรุงเล็กน้อยที่สามารถทำได้เพื่อเพิ่มประสบการณ์โดยรวมของนักพัฒนา ข้อดีอย่างหนึ่งของโมดูล AutoComplete คือการดาวน์โหลดฟรี ฉันจะพิจารณาใช้และแนะนำโมดูลนี้สำหรับผู้ค้า Magento 2

นอกจากนั้น ฉันจะตรวจสอบโมดูลที่เกี่ยวข้องกับการค้นหา Magento 2 ต่อไปและให้ข้อเสนอแนะเกี่ยวกับคุณภาพของโค้ด

ตอนที่ 4: ความท้าทาย Magento 2

Natalie: คุณเป็นนักพัฒนา Magento ที่ผ่านการทดสอบการต่อสู้ หลังจากทำงานกับ Magento มาหลายปี อะไรคือปัญหาที่ท้าทายที่สุดในเวอร์ชันที่สองของแพลตฟอร์มนี้

ตัวอย่างเช่น อย่างที่ฉันรู้ แม้แต่การเปลี่ยนแปลงโค้ดเล็กน้อยใน M2 ก็นำไปสู่การดำเนินการหลายอย่าง (เช่น bin/magento setup:upgrade, bin/magento setup:static-content:deploy, bin/magento setup:di:compile เป็นต้น )

แม็กซ์: ฉันคิดว่าในกรณีส่วนใหญ่เมื่อนักพัฒนานั่งอยู่หน้า PHPStorm และเขียนโค้ด ไม่มีเวลาที่จะเจาะลึกลงไปในสถาปัตยกรรม Magento 2 จริงๆ ตัวอย่างเช่น ฉันรู้จักนักพัฒนาที่ดีสองสามรายที่บ่นเกี่ยวกับส่วนประกอบ UI และไม่มีตัวอย่างจริงในการใช้งาน Magento DevDocs ใหม่ให้ภาพรวมที่ดีของ ส่วนประกอบ UI

นักพัฒนาที่มีประสบการณ์ที่ดีใน Magento 1 พบว่า Magento 2 ซับซ้อนและบางครั้งก็ท้าทาย เทคโนโลยีใหม่นำโอกาสใหม่ๆ มาสู่การเรียนรู้สิ่งใหม่ๆ อยู่เสมอ

มีแม้กระทั่งภาพเกี่ยวกับมัน

นาตาลี: และสุดท้าย Magento 2 ได้เปิดตัวในเดือนพฤศจิกายน 2015 คุณคิดว่าพร้อมแล้วสำหรับผู้ค้าทั่วโลกที่จะเริ่มอพยพไปอยู่หรือไม่?

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

ทีมงานของฉันที่ Pronko Consulting ยินดีที่จะนำวิสัยทัศน์ใหม่มาสู่ชีวิตและเปิดตัวเว็บไซต์ Magento 2 ใหม่

*****
เราอยากจะขอบคุณ Max สำหรับการสัมภาษณ์ครั้งนี้ และขออวยพรให้เขาและทีมของเขาประสบความสำเร็จและเป็นปีที่มีประสิทธิผล