อธิบายการเพิ่มประสิทธิภาพ Magento

เผยแพร่แล้ว: 2022-03-11

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

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

  • ตรวจสอบโมดูลของบริษัทอื่นและค้นหาปัญหาคอขวด
  • เปิดใช้งานแคชแบบเต็มหน้า
  • วานิช ไม่ใช่ไฟล์สำหรับแคชแบบเต็มหน้า
  • ตรวจสอบให้แน่ใจว่าแคชแบบเต็มหน้าใช้งานได้ มันอาจเสียหายได้ง่ายมาก
  • เปิดใช้งานโหมดการผลิต
  • การลดขนาด CSS/JS
  • เปิดใช้งานตารางแบบเรียบ
  • รับโฮสติ้งที่เร็วที่สุดที่คุณสามารถจ่ายได้
  • ปรับภาพให้เหมาะสม
  • ตัวสร้างดัชนีเพื่อ “อัปเดตตามกำหนดการ”
  • การบีบอัด GZIP
  • ใช้ Elasticsearch ในหน้าแคตตาล็อกและค้นหา
  • ตรวจสอบการเรียก Ajax ที่ไม่จำเป็นกลับไปยังเซิร์ฟเวอร์หลังจากโหลดหน้า (อาจทำให้เกิดการล็อกเซสชัน)
  • Redis สำหรับแคชของเพจและที่จัดเก็บเซสชัน

ตรวจสอบโมดูลของบริษัทอื่นและค้นหาปัญหาคอขวด

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

หนึ่งในสิ่งสำคัญที่นักพัฒนาซอฟต์แวร์รุ่นเยาว์ทำผิดใน 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 โดยเข้าสู่ระบบในฐานะผู้ดูแลระบบ:

  1. ไปที่ ระบบ > เครื่องมือ > การจัดการแคช
  2. เลือก ประเภทแคช ที่คุณต้องการเปิดใช้งาน
  3. ในดรอปดาวน์ Actions เลือก Enable และคลิก Submit

ภาพหน้าจอการเพิ่มประสิทธิภาพ Magento

ใช้วานิชสำหรับแคชแบบเต็มหน้า

เมื่อเปิดใช้งานแคชแบบเต็มหน้า ให้ใช้วานิชเพื่อจัดการ ไม่ใช่ไฟล์ Magento ขอแนะนำอย่างยิ่งให้ใช้วานิช (หรือ Redis) ในการผลิต การแคชแบบเต็มหน้าที่รวมอยู่ (กับระบบไฟล์หรือฐานข้อมูล) นั้นช้ากว่า Varnish มาก และ Varnish ได้รับการออกแบบมาเพื่อเพิ่มความเร็วทราฟฟิก HTTP

คุณสามารถดูคำแนะนำฉบับเต็มเกี่ยวกับวิธีการติดตั้งและกำหนดค่าวานิชได้ในเอกสารทางการของ Magento 2

ในการกำหนดค่า Magento ให้ใช้ Varnish ให้เข้าสู่ระบบ Magento Admin ในฐานะผู้ดูแลระบบ:

  1. ไปที่ Stores > Configuration > Advanced > System > Full Page Cache
  2. จากรายการ แอปพลิเคชันแคช คลิก Varnish Caching
  3. ป้อนค่าในช่อง TTL สำหรับเนื้อหาสาธารณะ
  4. ขยายการ กำหนดค่าวานิช และป้อนข้อมูลเฉพาะเกี่ยวกับการกำหนดค่าวานิชของคุณ

ภาพหน้าจอแคชแบบเต็มหน้าการเพิ่มประสิทธิภาพ Magento

ตรวจสอบให้แน่ใจว่าแคชแบบเต็มหน้าใช้งานได้: ใช้งานไม่ได้

แคชแบบเต็มหน้าอาจใช้งานไม่ได้ใน Magento 2 ตัวอย่างเช่น หากคุณต้องการแยกบล็อกออกจากแคช อย่าใช้แอตทริบิวต์ cacheable="false" ในเลย์เอาต์ XML เมื่อประกาศบล็อกของคุณ การดำเนินการนี้จะปิดใช้งานแคชสำหรับทั้งเพจที่มีบล็อกนั้นอยู่ ไม่เพียงแต่สำหรับบล็อกนั้นเท่านั้น นั่นเป็นความผิดพลาดที่ฉันเคยเห็นคนทำ

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

คุณยังสามารถทดสอบว่าเพจของคุณถูกแคชด้วยตนเองหรือไม่ วางร้านค้าในโหมดนักพัฒนาบนสภาพแวดล้อมในพื้นที่หรือบนเวทีของคุณ:

  1. ล้าง Magento cache
  2. โหลดหน้าในเบราว์เซอร์
  3. ตรวจสอบส่วนหัวของหน้าในแท็บเครือข่ายดีบั๊กของเบราว์เซอร์
  4. มองหา X-Magento-Cache-Debug: MISS
  5. รีเฟรชหน้าควรเปลี่ยนเป็น 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 ให้ทำตามขั้นตอนเหล่านี้:

  1. วาง Magento ไว้ในโหมดการผลิต
  2. ไปที่ Stores > Configuration > Advanced > Developer
  3. ตั้งค่าตัวเลือก ย่อขนาดไฟล์ Javascript เป็น ใช่
  4. บันทึกการกำหนดค่า
  5. ล้างแคชที่ ระบบ > หน้า การจัดการแคช

ภาพหน้าจอโหมดการผลิต Magento

ในการเปิดใช้งานการลดขนาด CSS จำเป็นต้องมีขั้นตอนต่อไปนี้:

  1. วาง Magento ไว้ในโหมดการผลิต
  2. ไปที่ Stores > Configuration > Advanced > Developer > CSS Settings
  3. ตั้งค่าตัวเลือก ย่อขนาดไฟล์ CSS เป็น ใช่
  4. บันทึกการกำหนดค่า
  5. ล้างแคชที่ ระบบ > หน้า การจัดการแคช

ภาพหน้าจอขนาดย่อของ Magento CSS

หมายเหตุ: อย่ารวมไฟล์ JS – เพียงแค่ ย่อขนาดไฟล์

เปิดใช้งาน Flat Tables

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

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

Magento สร้างและอัปเดต Flat Table ในทุกการจัดทำดัชนี คุณสามารถเปิดใช้งาน Flat Table ได้โดยเข้าสู่ระบบ Magento Admin ในฐานะผู้ดูแลระบบ:

  1. ไปที่ Stores > Configuration > Catalog > Catalog > Storefront
  2. เลือก ใช่ เพื่อ ใช้หมวดหมู่แค็ตตาล็อกแบบเรียบ
  3. เลือก ใช่ เพื่อ ใช้ผลิตภัณฑ์แค็ตตาล็อกแบบเรียบ
  4. บันทึกการกำหนดค่า

ภาพหน้าจอของ ตารางวีโอไอพีแบบแบน

เลือก 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 สำหรับกลุ่ม: ดัชนี"

กล่องโต้ตอบการกำหนดค่า Magento 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 ในฐานะผู้ดูแลระบบ:

  1. คลิก Stores > Settings > Configuration > Catalog > Catalog > Catalog Search
  2. จากรายการ เครื่องมือค้นหา ให้คลิก Elasticsearch หรือ Elasticsearch 5.0+ ดังรูปต่อไปนี้ (ตัวเลือก Elasticsearch 5.0+ ไม่พร้อมใช้งานสำหรับ Magento 2.1)

การตั้งค่า Elasticsearch ใน Magento

ตรวจสอบการโทร Ajax ที่ไม่จำเป็น

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

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

Ajax โทรใน Magento

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 ได้มากขึ้น