อธิบายการเพิ่มประสิทธิภาพ Magento
เผยแพร่แล้ว: 2022-03-11ประสิทธิภาพของวีโอไอพีมีความสำคัญยิ่ง ความเร็วในการโหลดมีผลกระทบโดยตรงและสามารถวัดได้ต่ออัตราการแปลงของเว็บไซต์ของคุณ ดังนั้นการติดตั้ง Magento ที่ปรับให้เหมาะสมจึงมีความสำคัญต่อความสำเร็จของร้านค้า Magento ของคุณและอาจรวมถึงธุรกิจของคุณโดยทั่วไป
ในบทความนี้ ผมจะนำเสนอวิธีที่นักพัฒนาระบบ Magento สามารถเพิ่มประสิทธิภาพการติดตั้ง Magento 2 ของตน และอธิบายวิธีดำเนินการดังต่อไปนี้:
- ตรวจสอบโมดูลของบริษัทอื่นและค้นหาปัญหาคอขวด
- เปิดใช้งานแคชแบบเต็มหน้า
- วานิช ไม่ใช่ไฟล์สำหรับแคชแบบเต็มหน้า
- ตรวจสอบให้แน่ใจว่าแคชแบบเต็มหน้าใช้งานได้ มันอาจเสียหายได้ง่ายมาก
- เปิดใช้งานโหมดการผลิต
- การลดขนาด CSS/JS
- เปิดใช้งานตารางแบบเรียบ
- รับโฮสติ้งที่เร็วที่สุดที่คุณสามารถจ่ายได้
- ปรับภาพให้เหมาะสม
- ตัวสร้างดัชนีเพื่อ “อัปเดตตามกำหนดการ”
- การบีบอัด GZIP
- ใช้ Elasticsearch ในหน้าแคตตาล็อกและค้นหา
- ตรวจสอบการเรียก Ajax ที่ไม่จำเป็นกลับไปยังเซิร์ฟเวอร์หลังจากโหลดหน้า (อาจทำให้เกิดการล็อกเซสชัน)
- Redis สำหรับแคชของเพจและที่จัดเก็บเซสชัน
ตรวจสอบโมดูลของบริษัทอื่นและค้นหาปัญหาคอขวด
มีโมดูลวีโอไอพีของบริษัทอื่นจำนวนมากที่มีโค้ดไม่ถูกต้อง ใช้วิธีการที่เลิกใช้แล้ว หรือมีปัญหาความเข้ากันได้กับวีโอไอพีเวอร์ชันเสถียรล่าสุด วิธีที่ดีที่สุดในการระบุคำขอจำนวนมากคือการใช้ตัวสร้างโปรไฟล์ ที่ช่วยให้คุณระบุจำนวนการสืบค้น MySQL ที่คุณมีในหน้าหนึ่งๆ และจำนวนที่เหมือนกัน เมื่อทราบแล้ว คุณสามารถกระชับข้อความค้นหาเหล่านั้นให้เป็นหนึ่งเดียว และทำให้ Magento เร็วขึ้น
หนึ่งในสิ่งสำคัญที่นักพัฒนาซอฟต์แวร์รุ่นเยาว์ทำผิดใน Magento คือการโหลดโมเดลภายในลูป พยายามหลีกเลี่ยงสิ่งนั้นให้มากที่สุด โหลดคอลเลกชันทั้งหมดด้วยทุกสิ่งที่คุณต้องการแล้ววนซ้ำ คำนึงถึงความซับซ้อนของเวลาและพื้นที่เสมอ และสร้างอัลกอริทึมของคุณในแบบที่เหมาะสมที่สุด
ดูว่าเลย์เอาต์ของคุณโหลดอย่างไรและบล็อกเทมเพลตใดที่ทำงานช้าที่สุด จากนั้นดูโค้ดนั้น ดูเมตริก Model CRUD ที่คุณจะพบข้อมูลเชิงลึก เช่น โหลดการเรียกเข้าในลูป
Magento แคชแบบเต็มหน้า
เมื่อผู้ใช้เข้าถึงร้านค้าของคุณ จะมีการร้องขอไปยังเซิร์ฟเวอร์ คำขอนี้ประมวลผลโดย PHP ดำเนินการเฉพาะและสืบค้นฐานข้อมูล จากนั้นส่งคืน HTML ที่เกี่ยวข้องเพื่อแสดงให้ผู้ใช้เห็น แคชแบบเต็มหน้าจะเก็บการตอบสนอง HTML นั้นไว้ ดังนั้นคำขอที่เหมือนกันถัดไปจะส่งกลับโดยตรงโดยข้ามการประมวลผลส่วนหลังและการสืบค้นฐานข้อมูลทั้งหมด ทำให้การตอบสนองเว็บไซต์เร็วขึ้นมาก
การใช้แคชแบบเต็มหน้าเป็นส่วนหนึ่งของความพยายามในการเพิ่มประสิทธิภาพวีโอไอพีของคุณสามารถเพิ่มความเร็วเว็บไซต์ของคุณได้อย่างมาก การดำเนินการนี้จะสร้างเวอร์ชันแคชของหน้าเว็บของคุณและจะส่งไปยังผู้ใช้ แทนที่จะเรียกใช้การสืบค้นทั้งหมดสำหรับแต่ละคำขอ แน่นอนว่าไม่ใช่ทุกหน้าจะถูกแคช ตัวอย่างเช่น หน้ารถเข็นจะไม่ถูกแคช มิฉะนั้น ผู้ใช้ทั้งหมดจะเห็นเวอร์ชันที่แคชไว้เป็นเวอร์ชันแรก เหล่านี้เป็นหน้าแบบไดนามิกหรือส่วนของหน้าที่มีเฉพาะผู้ใช้และเซสชัน
ในการเปิดใช้งานแคชแบบเต็มหน้าของ Magento คุณสามารถเรียกใช้คำสั่ง CLI ต่อไปนี้:
php bin/magento cache:enable full_page
ในการเปิดใช้งานประเภทแคช คุณสามารถรันคำสั่ง CLI:
php bin/magento cache:enable
คุณสามารถทำได้จาก Magento Admin โดยเข้าสู่ระบบในฐานะผู้ดูแลระบบ:
- ไปที่ ระบบ > เครื่องมือ > การจัดการแคช
- เลือก ประเภทแคช ที่คุณต้องการเปิดใช้งาน
- ในดรอปดาวน์ Actions เลือก Enable และคลิก Submit
ใช้วานิชสำหรับแคชแบบเต็มหน้า
เมื่อเปิดใช้งานแคชแบบเต็มหน้า ให้ใช้วานิชเพื่อจัดการ ไม่ใช่ไฟล์ Magento ขอแนะนำอย่างยิ่งให้ใช้วานิช (หรือ Redis) ในการผลิต การแคชแบบเต็มหน้าที่รวมอยู่ (กับระบบไฟล์หรือฐานข้อมูล) นั้นช้ากว่า Varnish มาก และ Varnish ได้รับการออกแบบมาเพื่อเพิ่มความเร็วทราฟฟิก HTTP
คุณสามารถดูคำแนะนำฉบับเต็มเกี่ยวกับวิธีการติดตั้งและกำหนดค่าวานิชได้ในเอกสารทางการของ Magento 2
ในการกำหนดค่า Magento ให้ใช้ Varnish ให้เข้าสู่ระบบ Magento Admin ในฐานะผู้ดูแลระบบ:
- ไปที่ Stores > Configuration > Advanced > System > Full Page Cache
- จากรายการ แอปพลิเคชันแคช คลิก Varnish Caching
- ป้อนค่าในช่อง TTL สำหรับเนื้อหาสาธารณะ
- ขยายการ กำหนดค่าวานิช และป้อนข้อมูลเฉพาะเกี่ยวกับการกำหนดค่าวานิชของคุณ
ตรวจสอบให้แน่ใจว่าแคชแบบเต็มหน้าใช้งานได้: ใช้งานไม่ได้
แคชแบบเต็มหน้าอาจใช้งานไม่ได้ใน Magento 2 ตัวอย่างเช่น หากคุณต้องการแยกบล็อกออกจากแคช อย่าใช้แอตทริบิวต์ cacheable="false"
ในเลย์เอาต์ XML เมื่อประกาศบล็อกของคุณ การดำเนินการนี้จะปิดใช้งานแคชสำหรับทั้งเพจที่มีบล็อกนั้นอยู่ ไม่เพียงแต่สำหรับบล็อกนั้นเท่านั้น นั่นเป็นความผิดพลาดที่ฉันเคยเห็นคนทำ
มองหาแอตทริบิวต์ cacheable="false"
ในเลย์เอาต์ของคุณและดูว่าบล็อกใดถูกตั้งค่าและหน้าที่บล็อกเหล่านั้นถูกเรียก ดังนั้น คุณสามารถระบุได้ว่าหน้าไม่สำคัญมีปัญหากับแคชหรือไม่
คุณยังสามารถทดสอบว่าเพจของคุณถูกแคชด้วยตนเองหรือไม่ วางร้านค้าในโหมดนักพัฒนาบนสภาพแวดล้อมในพื้นที่หรือบนเวทีของคุณ:
- ล้าง Magento cache
- โหลดหน้าในเบราว์เซอร์
- ตรวจสอบส่วนหัวของหน้าในแท็บเครือข่ายดีบั๊กของเบราว์เซอร์
- มองหา X-Magento-Cache-Debug: MISS
- รีเฟรชหน้าควรเปลี่ยนเป็น HIT
หากไม่เปลี่ยนเป็น HIT แสดงว่าเพจไม่ได้แคชและแคชไม่ทำงาน
อย่าลืมเปิดใช้งานโหมดการผลิต
Magento มีโหมดการทำงานสามโหมด ค่าเริ่มต้น นักพัฒนา และโหมด การผลิต
โหมดการใช้งานจริงมีไว้สำหรับการปรับใช้งานบนระบบที่ใช้งานจริง โหมดนี้ซ่อนข้อยกเว้น ให้บริการไฟล์สแตติกจากแคชเท่านั้น และไม่อนุญาตให้คุณเปิดหรือปิดใช้งานประเภทแคชใน Magento Admin นอกจากนี้ยังป้องกันการคอมไพล์ไฟล์โค้ดอัตโนมัติ
ขณะทำงานและพัฒนาร้านค้า โหมดนักพัฒนาทำงานอยู่ อย่าลืมเปลี่ยนไปใช้โหมดการผลิตเมื่อคุณปรับใช้ไซต์ของคุณกับเซิร์ฟเวอร์ที่ใช้งานจริง!
คำสั่ง CLI เพื่อดูโหมดปัจจุบันคือ:
php bin/magento deploy:mode:show
คำสั่ง CLI เพื่อเปลี่ยนเป็นโหมดการผลิตคือ:
php bin/magento deploy:mode:set production
คำสั่ง CLI เพื่อเปลี่ยนเป็นโหมดนักพัฒนาซอฟต์แวร์คือ:
php bin/magento deploy:mode:set developer
คุณสามารถค้นหาข้อมูลโดยละเอียดเพิ่มเติมเกี่ยวกับโหมด Magento ต่างๆ ได้ที่นี่
การลดขนาด CSS/JS
การลดขนาดไฟล์ CSS และ JS เป็นองค์ประกอบสำคัญของการเพิ่มประสิทธิภาพความเร็วของ Magento 2 การลดขนาดจะทำให้เราลบช่องว่าง แท็บ และการขึ้นบรรทัดใหม่ทั้งหมดในไฟล์ ไฟล์ที่ได้จะมีอักขระน้อยกว่าและมีขนาดที่เล็กกว่า ดังนั้นจึงดาวน์โหลดได้เร็วขึ้น
Magento มีคุณสมบัตินี้ในตัว และคุณสามารถเปิดใช้งานการลดขนาด CSS/JS ในผู้ดูแลระบบได้ หากต้องการเปิดใช้งานการลดขนาด JavaScript ให้ทำตามขั้นตอนเหล่านี้:
- วาง Magento ไว้ในโหมดการผลิต
- ไปที่ Stores > Configuration > Advanced > Developer
- ตั้งค่าตัวเลือก ย่อขนาดไฟล์ Javascript เป็น ใช่
- บันทึกการกำหนดค่า
- ล้างแคชที่ ระบบ > หน้า การจัดการแคช
ในการเปิดใช้งานการลดขนาด CSS จำเป็นต้องมีขั้นตอนต่อไปนี้:
- วาง Magento ไว้ในโหมดการผลิต
- ไปที่ Stores > Configuration > Advanced > Developer > CSS Settings
- ตั้งค่าตัวเลือก ย่อขนาดไฟล์ CSS เป็น ใช่
- บันทึกการกำหนดค่า
- ล้างแคชที่ ระบบ > หน้า การจัดการแคช
หมายเหตุ: อย่ารวมไฟล์ JS – เพียงแค่ ย่อขนาดไฟล์
เปิดใช้งาน Flat Tables
Magento ใช้โมเดล EAV (ค่าแอตทริบิวต์ของเอนทิตี) ซึ่งเก็บแอตทริบิวต์ของเอนทิตีไว้ในหลายตารางขึ้นอยู่กับประเภทค่า การใช้หลายตาราง การรวมและการร้องขอในหลายตารางมีความจำเป็นในการดึงข้อมูล ซึ่งอาจทำให้การสืบค้นช้าลง
Magento มีตัวเลือกในการใช้ Flat Table สำหรับแคตตาล็อกและผลิตภัณฑ์ ตารางแบบเรียบถูกสร้างขึ้นโดยการรวมแอตทริบิวต์ทั้งหมดของเอนทิตีเป็นตารางเดียว เมื่อร้องขอข้อมูล เราจำเป็นต้องสืบค้นหนึ่งตาราง ทำให้เร็วขึ้นมาก
Magento สร้างและอัปเดต Flat Table ในทุกการจัดทำดัชนี คุณสามารถเปิดใช้งาน Flat Table ได้โดยเข้าสู่ระบบ Magento Admin ในฐานะผู้ดูแลระบบ:
- ไปที่ Stores > Configuration > Catalog > Catalog > Storefront
- เลือก ใช่ เพื่อ ใช้หมวดหมู่แค็ตตาล็อกแบบเรียบ
- เลือก ใช่ เพื่อ ใช้ผลิตภัณฑ์แค็ตตาล็อกแบบเรียบ
- บันทึกการกำหนดค่า
เลือก Fast Magento Hosting
ตรวจสอบข้อกำหนดขั้นต่ำของ Magento และดูว่าเซิร์ฟเวอร์ของคุณตรงตามข้อกำหนดหรือไม่ คุณสามารถดูข้อกำหนดสแต็คเทคโนโลยี Magento 2.2.x อย่างเป็นทางการได้ที่นี่
การกำหนดค่าโฮสติ้งมีความสำคัญมากสำหรับประสิทธิภาพของ Magento 2 นอกจากนี้ยังมีบริการโฮสติ้งเฉพาะสำหรับ Magento แม้ว่าบริการเหล่านี้จะเป็นเรื่องเกี่ยวกับการตลาดมากกว่าอย่างอื่น
บรรทัดด้านล่าง: รับโซลูชันโฮสติ้งที่เร็วที่สุดที่คุณสามารถจ่ายได้ เว้นแต่จะมีค่าใช้จ่ายสูงเกินไปสำหรับโครงการของคุณ
การเพิ่มประสิทธิภาพภาพ Magento
ขนาดของรูปภาพส่งผลต่อความเร็วของเว็บไซต์ของคุณอย่างเห็นได้ชัด ตัวอย่างเช่น หากคุณมีหน้าแค็ตตาล็อกที่มีผลิตภัณฑ์ 20 รายการ และรูปภาพผลิตภัณฑ์แต่ละภาพมีขนาด 1Mb ซึ่งจะทำให้ดาวน์โหลดเมื่อโหลดหน้าเว็บทั้งหมด 20Mb และอาจเป็นปัญหาได้ในบางสถานการณ์ (อุปกรณ์เคลื่อนที่ แบนด์วิดธ์ที่จำกัดในบางภูมิภาค เป็นต้น)
ตรวจสอบว่ารูปภาพของคุณได้รับการปรับให้เหมาะสมอย่างเหมาะสมหรือไม่ และมีอัตราส่วนที่ดีระหว่างคุณภาพและขนาดหรือไม่ นอกจากนี้ ตรวจสอบให้แน่ใจว่ารูปภาพของคุณไม่ได้ปรับขนาดด้วย CSS แต่ได้ปรับขนาดไฟล์ต้นฉบับเป็นขนาดเฉพาะที่คุณต้องการ
อีกเทคนิคหนึ่งคือใช้การโหลดแบบ Lazy Loading ซึ่งหมายถึงการโหลดรูปภาพของคุณหลังจากที่โหลดหน้าเว็บจนเต็มแล้ว หรือในขณะที่ผู้ใช้เลื่อนดูแคตตาล็อก
คุณยังสามารถใช้ AWS หรือ CDN เพื่อส่งเนื้อหาของคุณได้เร็วขึ้นมาก มาดูความแตกต่างอย่างรวดเร็วระหว่าง AWS, CDN และโฮสติ้งแบบดั้งเดิมจากมุมมองการเพิ่มประสิทธิภาพบิตแมป

โฮสติ้งแบบดั้งเดิม
วิธีดั้งเดิมคือการจัดเก็บเนื้อหาของคุณ เช่น รูปภาพ บนเซิร์ฟเวอร์เดียวกันกับเว็บไซต์ของคุณ การดำเนินการนี้อาจใช้พื้นที่ดิสก์และแบนด์วิดท์จำนวนมาก ซึ่งสร้างภาระให้กับเซิร์ฟเวอร์จำนวนมาก เห็นได้ชัดว่าการปรับขนาดด้วยโฮสติ้งแบบดั้งเดิมอาจเป็นปัญหาได้
CDN (เครือข่ายการส่งเนื้อหา)
เครือข่ายการจัดส่งเนื้อหามักใช้เพื่อลดภาระของเซิร์ฟเวอร์โดยให้บริการเนื้อหาบางส่วนของเว็บไซต์ นอกจากนั้น ยังนำเสนอประสิทธิภาพสูงด้วยการนำเสนอเนื้อหาของคุณอย่างรวดเร็วและมีความพร้อมใช้งานสูงโดยใช้หลายเครือข่ายเพื่อเรียกใช้
AWS (Amazon CloudFront)
Amazon CloudFront เป็นเครือข่ายการจัดส่งเนื้อหา (CDN) ที่มีความปลอดภัยสูงซึ่งมีการป้องกันระดับเครือข่ายและแอปพลิเคชัน ตรวจสอบบทช่วยสอนนี้เกี่ยวกับวิธีเริ่มต้นใช้งาน AWS และส่งมอบเนื้อหาได้เร็วขึ้น
นอกจากนี้ คุณยังสามารถใช้ AWS เพื่อปรับขนาดภาพได้ทันทีตามขนาดที่ส่งผ่านพารามิเตอร์การสืบค้น สำหรับข้อมูลเพิ่มเติม โปรดดูบทช่วยสอนนี้เกี่ยวกับการปรับขนาดรูปภาพด้วย Amazon CloudFront และ Lambda@Edge
ตั้งค่าตัวสร้างดัชนีเป็น “อัปเดตตามกำหนดเวลา”
ตัวสร้างดัชนี Magento สามารถตั้งค่าได้สองโหมด: “ Update on Save ” หรือ “ Update on Schedule ”
เมื่อตั้งค่าเป็น "อัปเดตเมื่อบันทึก" ทุกครั้งที่คุณบันทึกผลิตภัณฑ์ คุณลักษณะ หรือหมวดหมู่ ดัชนีเฉพาะจะเริ่มทำงาน ตัวสร้างดัชนีอาจทำให้สิ้นเปลืองทรัพยากรและอาจทำให้เซิร์ฟเวอร์ของคุณช้าลง
โหมดที่ดีที่สุดในการตั้งค่าตัวสร้างดัชนีคือ "อัปเดตตามกำหนดเวลา" ด้วยวิธีนี้ คุณมั่นใจว่างาน cron จะถูกเรียกใช้งานตามเวลาที่คุณกำหนดไว้ เลือกเวลาที่การเข้าชมเว็บไซต์ของคุณต่ำ
คุณสามารถดูโหมดตัวทำดัชนีปัจจุบันได้โดยการรันคำสั่ง:
php bin/magento indexer:show-mode
หรือใน Magento Admin โดยไปที่:
ระบบ > การจัดการดัชนี
คุณสามารถเปลี่ยนโหมดตัวสร้างดัชนีเป็น "อัปเดตตามกำหนดเวลา" ได้โดยเรียกใช้คำสั่ง:
php bin/magento indexer:set-mode schedule
คุณสามารถเปลี่ยนโหมดตัวสร้างดัชนีเป็น "อัปเดตเมื่อบันทึก" โดยเรียกใช้คำสั่ง:
php bin/magento indexer:set-mode realtime
และนี่คือใน Magento Admin:
ระบบ > การจัดการดัชนี: เลือกตัวสร้างดัชนีทั้งหมดและจากดรอปดาวน์ Actions เลือก “อัปเดตตามกำหนดเวลา”
คุณยังกำหนดค่างานที่กำหนดเวลาไว้โดยไปที่ผู้ดูแลระบบเพื่อ:
ร้านค้า > การตั้งค่า > การ กำหนดค่า > ขั้นสูง > ระบบ > Cron (งานที่กำหนดเวลาไว้)
ขยาย "ตัวเลือกการกำหนดค่า Cron สำหรับกลุ่ม: ดัชนี"
การบีบอัด GZIP
Gzip เป็นวิธีการบีบอัดไฟล์เพื่อการถ่ายโอนเครือข่ายที่เร็วขึ้น การบีบอัดช่วยให้เว็บเซิร์ฟเวอร์ของคุณสามารถจัดเตรียมไฟล์ที่มีขนาดเล็กลง ซึ่งจะโหลดเร็วขึ้นสำหรับผู้ใช้เว็บไซต์ของคุณ อย่างไรก็ตามสิ่งนี้มีค่าใช้จ่าย
ในขณะที่บีบอัดไฟล์ คุณโหลด CPU และยิ่งคุณบีบอัดไฟล์มากเท่าใด กระบวนการก็จะยิ่งใช้เวลานานขึ้นเท่านั้น แม้ว่าสิ่งนี้จะเพิ่มโหลด CPU ของเซิร์ฟเวอร์ แต่ก็สามารถลดการใช้แบนด์วิดท์ได้อย่างมาก ด้วย gzip คุณสามารถเลือกระดับการบีบอัดต่างๆ ตั้งแต่ 1 ถึง 9
ที่ระดับ 1 คุณมีเวลาการบีบอัดที่เร็วที่สุด แต่มีอัตราการบีบอัดที่ต่ำกว่า ฝั่งตรงข้าม ที่ระดับ 9 คุณมีอัตราการบีบอัดสูงสุดแต่มีความเร็วต่ำกว่า การกำหนดค่าเริ่มต้นของ gzip ใช้ระดับ 6 ซึ่งชอบการบีบอัดมากกว่าความเร็ว แม้ว่า Nginx จะใช้ระดับ 1 แต่ให้ความเร็วมากกว่าขนาดไฟล์
หากต้องการเปิดการบีบอัด gzip และเปิดใช้งานโมดูล mod_deflate
ของ Apache คุณสามารถเพิ่มได้โดยอัปเดตไฟล์ .htaccess ของคุณและยกเลิกการใส่เครื่องหมายบรรทัดที่เหมาะสมดังที่แสดงด้านล่าง โมดูล mod_deflate
จะบีบอัดทรัพยากรแบบคงที่เป็นไฟล์ขนาดเล็กก่อนที่จะถ่ายโอนไปยังเบราว์เซอร์
<IfModule mod_deflate.c> ############################################ ## enable apache served files compression ## http://developer.yahoo.com/performance/rules.html#gzip # Insert filter on all content SetOutputFilter DEFLATE # Insert filter on selected content types only AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/x-javascript application/json image/svg+xml # Netscape 4.x has some problems... BrowserMatch ^Mozilla/4 gzip-only-text/html # Netscape 4.06-4.08 have some more problems BrowserMatch ^Mozilla/4\.0[678] no-gzip # MSIE masquerades as Netscape, but it is fine BrowserMatch \bMSIE !no-gzip !gzip-only-text/html # Don't compress images SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary # Make sure proxies don't deliver the wrong content Header append Vary User-Agent env=!dont-vary </IfModule>
ใช้ Elasticsearch บนหน้าแค็ตตาล็อกและการค้นหา
อีกวิธีหนึ่งที่คุณสามารถเพิ่มความเร็วเว็บไซต์ได้คือการใช้ Elasticsearch สำหรับหน้าแค็ตตาล็อกและผลการค้นหา ตั้งค่าเซิร์ฟเวอร์ Elasticsearch ของคุณและเชื่อมต่อที่เก็บ Magento เข้ากับเซิร์ฟเวอร์ การค้นหาเร็วขึ้นมากโดยใช้ Elasticsearch
คู่มืออย่างเป็นทางการนี้จะอธิบายวิธีกำหนดค่า Magento ด้วย Elasticsearch
ในการกำหนดค่า Magento ให้ใช้ Elasticsearch ให้เข้าสู่ระบบ Magento Admin ในฐานะผู้ดูแลระบบ:
- คลิก Stores > Settings > Configuration > Catalog > Catalog > Catalog Search
- จากรายการ เครื่องมือค้นหา ให้คลิก Elasticsearch หรือ Elasticsearch 5.0+ ดังรูปต่อไปนี้ (ตัวเลือก Elasticsearch 5.0+ ไม่พร้อมใช้งานสำหรับ Magento 2.1)
ตรวจสอบการโทร Ajax ที่ไม่จำเป็น
การเรียกกลับไปยังเซิร์ฟเวอร์หลังจากการโหลดเพจอาจทำให้เกิดการล็อกเซสชัน วิธีตรวจสอบการเรียก Ajax ทั้งหมดที่เพจของคุณทำคือการใช้ DevTools ใน Chrome คุณสามารถเปิดได้โดยคลิกขวาที่หน้าและเลือกตรวจสอบ
ไปที่แท็บเครือข่ายและคุณสามารถกรองคำขอด้วย XHR ตอนนี้คุณสามารถดูคำขอ Ajax ทั้งหมดของหน้าและตรวจสอบเพื่อดูว่าคำขอใดบ้างที่จำเป็นในหน้านั้น
Redis สำหรับแคชของเพจและที่จัดเก็บเซสชัน
Redis เป็นโซลูชันแคชแบ็คเอนด์เสริมเพื่อแทนที่ Zend_Cache_Backend_File
ซึ่งใช้ใน Magento 2 โดยค่าเริ่มต้น
ทำไมต้องใช้ Redis?
การใช้ Redis มีข้อดีหลายประการ:
- คุณสามารถแทนที่ memcached ด้วย Redis ได้เพราะสามารถใช้กับพื้นที่จัดเก็บเซสชัน PHP ได้
- Redis รองรับการบันทึกบนดิสก์และการจำลองแบบมาสเตอร์/สเลฟ ซึ่งเป็นคุณสมบัติที่ร้องขออย่างสูงซึ่ง memcached ไม่รองรับ การจำลองแบบหลีกเลี่ยงจุดล้มเหลวเพียงจุดเดียวและให้ความพร้อมใช้งานสูง
- การทำงานของแท็กไม่จำเป็นต้องสแกนไฟล์แคชทุกไฟล์อย่างเต็มรูปแบบ เนื่องจาก Redis ทำงานโดยการสร้างดัชนีแท็กในไฟล์
- แบ็คเอนด์รองรับการล้างแคชตามแท็กโดยไม่มีลูป foreach
นอกจากนี้ยังมีข้อเสียหลัก:
- เนื่องจาก Redis เป็นที่เก็บในหน่วยความจำ ข้อมูลทั้งหมดของคุณจึงต้องพอดีกับหน่วยความจำ ซึ่งหมายความว่าจำกัดความเร็วและความจุของ RAM เท่านั้น
กำหนดค่า Magento เพื่อใช้ Redis สำหรับการจัดเก็บเซสชัน
ต่อไปนี้เป็นตัวอย่างการกำหนดค่าเพื่อเพิ่มใน <your Magento install dir>app/etc/env.php
:
'session' => array ( 'save' => 'redis', 'redis' => array ( 'host' => '127.0.0.1', 'port' => '6379', 'password' => '', 'timeout' => '2.5', 'persistent_identifier' => '', 'database' => '2', 'compression_threshold' => '2048', 'compression_library' => 'gzip', 'log_level' => '1', 'max_concurrency' => '6', 'break_after_frontend' => '5', 'break_after_adminhtml' => '30', 'first_lifetime' => '600', 'bot_first_lifetime' => '60', 'bot_lifetime' => '7200', 'disable_locking' => '0', 'min_lifetime' => '60', 'max_lifetime' => '2592000' ) ),
คุณสามารถตรวจสอบรายละเอียดทั้งหมดเกี่ยวกับพารามิเตอร์ได้ที่นี่ และวิธีการตรวจสอบเบื้องต้นว่าการติดตั้ง Redis ของคุณทำงานได้ดีกับ Magento ของคุณ
กำหนดค่า Magento เพื่อใช้ Redis สำหรับเพจและแคชเริ่มต้น
มีสองวิธีในการกำหนดค่า Redis สำหรับเพจและแคชเริ่มต้น คุณสามารถแก้ไขไฟล์ <Magento install dir>app/etc/env.php
ได้ด้วยตนเอง หรือคุณสามารถใช้บรรทัดคำสั่ง ซึ่งเป็นวิธีการที่แนะนำ เนื่องจากยังมีการตรวจสอบอีกด้วย
สำหรับแคชเริ่มต้นให้รันคำสั่ง:
php bin/magento setup:config:set --cache-backend=redis --cache-backend-redis-<parameter_name>=<parameter_value>...
ระบุพารามิเตอร์เฉพาะสำหรับการแคชเริ่มต้นของ Redis
สำหรับเพจแคชให้รันคำสั่ง:
Php bin/magento setup:config:set --page-cache=redis --page-cache-redis-server=redis.example.com --page-cache-redis-db=1
คำสั่งนี้เปิดใช้งานการแคชหน้า Redis ตั้งค่าโฮสต์เป็น redis.example.com
และกำหนดหมายเลขฐานข้อมูลเป็น 1 คุณสามารถตรวจสอบรายละเอียดทั้งหมดบน Magento DevDocs
สรุปการเพิ่มประสิทธิภาพ Magento
เราได้กล่าวถึงแนวทางบางส่วนในการเพิ่มประสิทธิภาพ Magento 2 ไปแล้ว ดังนั้นเรามาสรุปกันสั้นๆ กัน
การระบุและแก้ไขปัญหาคอขวดจะสร้างความแตกต่างอย่างมากในการประมวลผลข้อมูลของคุณ การใช้แคชแบบเต็มหน้าและวานิชจะช่วยเพิ่มความเร็วเว็บไซต์ของคุณและเร่งการรับส่งข้อมูล HTTP คุณควรใช้ Magento ในโหมดใช้งานจริงบนเซิร์ฟเวอร์ที่ใช้งานจริงเสมอ โดยไม่มีข้อแก้ตัว ใช้การลดขนาดเพื่อลดขนาดไฟล์ CSS และ JS ไฟล์ที่เล็กกว่าจะดาวน์โหลดเร็วขึ้นและใช้แบนด์วิดท์น้อยลง
เปิดใช้งานตารางแบบเรียบเพื่อลดคำขอฐานข้อมูลและปรับปรุงเวลาตอบสนองของฐานข้อมูล ปรับภาพของคุณให้เหมาะสมและใช้ CDN ถ้าเป็นไปได้ ตั้งค่าตัวทำดัชนีให้อัปเดตตามกำหนดเวลาและเปิดใช้งาน Magento cron การเปิดใช้งานการบีบอัด gzip จะลดขนาดของไฟล์ที่จะดาวน์โหลดด้วย การใช้ Elasticsearch จะเพิ่มความเร็วของหน้าแคตตาล็อกของคุณและหน้าผลการค้นหาจะโหลดเร็วขึ้นมาก ใช้ Redis สำหรับแคชของเพจและที่จัดเก็บเซสชันซึ่งเร็วกว่า memcache เริ่มต้นอย่างมาก
คุณสามารถใช้คำแนะนำเหล่านี้ทั้งหมดหรือเพียงบางส่วนที่คุณยังไม่เคยใช้ แม้แต่สองสามคู่ก็เพียงพอที่จะปรับปรุงประสิทธิภาพของ Magento ซึ่งหวังว่าจะแปลงเป็น Conversion ได้มากขึ้น