บทเรียนยอดนิยมขณะเพิ่มประสิทธิภาพ WordPress (เพื่อความสำเร็จของลูกค้า)

เผยแพร่แล้ว: 2022-09-15
สารบัญ ซ่อน
1. อะไรกระตุ้นให้ฉันพูดที่ WordCamp Mumbai
2. ปัญหาสามประการที่ทำให้ฉันนอนไม่หลับ (พร้อมวิธีแก้ไขและบทเรียนที่เรียนรู้จากพวกเขา)
2.1. ลดเวลาในการโหลดหน้าเว็บจาก 3 นาทีเป็นมิลลิวินาที...
2.1.1. ปัญหา
2.1.2. วิธีการแก้
2.1.3. ปรับปรุงการแก้ปัญหา
2.2. ข้อผิดพลาดการหมดเวลากลายเป็นคุณสมบัติที่ขายดีที่สุดของปลั๊กอินของเราได้อย่างไร
2.2.1. ปัญหา
2.2.2. วิธีการแก้
2.2.3. ปรับปรุงการแก้ปัญหา
2.3. สภาพแวดล้อมการโฮสต์ที่ใช้ร่วมกันบังคับให้เราเขียนปลั๊กอินใหม่อย่างไร
2.3.1. ปัญหา
2.3.2. วิธีการแก้
3. สรุปบทเรียน
4. คุณเลือกอะไร?

ครั้งสุดท้ายที่คุณมีเมฆเก้าช่วงเวลาคือเมื่อไหร่?

เรียนจบสีสดใส..หรือเมื่อแฟน/แฟนตอบรับข้อเสนอ?

ฉันมีเมฆเก้านาทีเมื่อสองสัปดาห์ก่อน! ฉันกำลัง พูดที่ WordCamp Mumbai 2017 – WordCamp ที่ใหญ่ที่สุดของอินเดีย

หัวข้อนี้เป็นสิ่งที่ใกล้เคียงกับใจฉัน และสิ่งที่ฉันจัดการทุกวัน – บทเรียนที่เรียนรู้การเพิ่มประสิทธิภาพ WordPress เพื่อความสำเร็จของลูกค้า

มันเกี่ยวกับปัญหาที่ฉันต้องเผชิญในการจัดการกับฐานข้อมูล WordPress ขนาดใหญ่และวิธีจัดการกับมัน

อะไรกระตุ้นให้ฉันพูดที่ WordCamp Mumbai

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

ที่ StoreApps นักพัฒนาไม่เพียงแต่เขียนโค้ดเท่านั้น แต่ยังสนับสนุนลูกค้าอีกด้วย การแก้ไขข้อสงสัยของลูกค้าได้ให้บทเรียนที่ยิ่งใหญ่ที่สุดแก่ฉัน

นั่นคือกิจวัตรประจำวันของฉันทั้งหมด และมันก็ค่อนข้างน่าตื่นเต้น

แต่คุณรู้ไหมว่าอะไรน่าตื่นเต้นสำหรับฉันมากกว่ากัน? ทำงานกับฐานข้อมูลขนาดใหญ่และแก้ปัญหาฐานข้อมูลที่ซับซ้อน!

ปลั๊กอินของเรามีผู้ใช้มากกว่า 35,000 ราย และฉันได้เห็นความท้าทายมากมายในการทำงานกับร้านค้า WooCommerce ขนาดใหญ่และไซต์ WordPress ยอดนิยม

โชคดีที่ฉันสามารถแก้ปัญหาเหล่านี้และเรียนรู้อะไรมากมาย

แต่เดี๋ยวก่อน เช่นเดียวกับฉัน จะมีนักพัฒนาอีกหลายร้อยคนที่ประสบปัญหาคล้ายคลึงกันในการทำงานกับ WordPress และ WooCommerce

ดังนั้นฉันจึงตัดสินใจแบ่งปันบทเรียนกับผู้อื่น

และแพลตฟอร์มใดจะดีไปกว่าโอกาสในการพูดที่ WordCamp ที่ใหญ่ที่สุดในอินเดีย!

ปัญหาสามประการที่ทำให้ฉันนอนไม่หลับ (พร้อมวิธีแก้ไขและบทเรียนที่เรียนรู้จากพวกเขา)

สุดท้ายนี้ ปัญหาสามข้อที่ฉันกำลังพูดถึง เริ่มจากพวกเขาทีละคน

ลดเวลาในการโหลดหน้าเว็บจาก 3 นาทีเป็นมิลลิวินาที...

ปัญหา

ฉันเผชิญกับสถานการณ์ด้วยปลั๊กอิน Smart Coupons ซึ่งฟังก์ชันง่ายๆ ในการแสดงคูปองในหน้าสำคัญของร้านค้า (เช่น รถเข็น หน้าชำระเงิน และหน้าบัญชีของฉัน) ทำให้กระบวนการชำระเงินหยุดชะงัก

Smart Coupons เป็นปลั๊กอินสำหรับสร้างและจัดการคูปองและบัตรของขวัญจำนวนมากสำหรับร้านค้า WooCommerce

วิธีการแก้

ตอนนี้ การใช้ WP Query จะส่งผลให้มี JOIN หลายรายการ สำหรับการแสดงคูปองที่พร้อมใช้งานสำหรับผู้ใช้เฉพาะต้องมีการประเมินเงื่อนไขเมตาหลายรายการ

ดังนั้น แทนที่จะใช้วิธีค้นหาฐานข้อมูลในอุดมคติ เช่น WP Query ฉัน เขียน คำสั่ง SQL แบบกำหนดเอง

การเพิ่มประสิทธิภาพ WordPress
คูปองสมาร์ทรหัสเก่า

นอกจากนี้ ในการสืบค้นข้อมูลที่กำหนดเอง สิ่งที่ฉันทำคือ:

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

ฉันทำจนกระทั่งได้ post_ids ชุดสุดท้ายที่ต้องแสดงสำหรับผู้ใช้เฉพาะ

การเพิ่มประสิทธิภาพ WordPress
สมาร์ทคูปอง รหัสใหม่

ปรับปรุงการแก้ปัญหา

วิธีนี้ช่วยแก้ปัญหาการโหลดหน้าเว็บได้ อย่างไรก็ตาม เพื่อให้หน้าเว็บโหลดได้ภายในไม่กี่วินาที ตามที่เพื่อนของเราแนะนำ ฉันต้องกำหนดปัญหาใหม่

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

ข้อผิดพลาดการหมดเวลากลายเป็นคุณสมบัติที่ขายดีที่สุดของปลั๊กอินของเราได้อย่างไร

ปัญหา

สำหรับการประมวลผลการอัปเดตฐานข้อมูลขนาดใหญ่มาก ฉันได้เขียนข้อความค้นหาที่กำหนดเองเนื่องจากการใช้ฟังก์ชันหลักของ WordPress อาจกลายเป็นค่าใช้จ่ายมหาศาล

ตัวอย่าง: หากต้องลดราคาของผลิตภัณฑ์ทั้งหมดในร้านค้าของตนลง 40% พวกเขาก็ต้องเลือก 'ราคา', 'ลดลง 40%' และกดปุ่มอัปเดต เป็นไปได้ง่ายโดยใช้ปลั๊กอิน Smart Manager ของเรา ซึ่งออกแบบมาเพื่อให้การอัปเดตจำนวนมากบนร้านค้า WooCommerce ของคุณง่ายขึ้น

แต่กระบวนการอัปเดตแบบกลุ่มเริ่มหยุดชะงักและทำให้เกิดข้อผิดพลาดการหมดเวลาเมื่อใดก็ตามที่มีคนพยายาม อัปเดตผลิตภัณฑ์ 1,000 รายการหรือทั้งร้านในคราว เดียว

ตอนแรกฉันเริ่มมองหาการเพิ่มประสิทธิภาพการสืบค้นข้อมูล แต่ก็ไม่ได้ผล

สถานการณ์ของฉันคล้ายกับผู้เข้าแข่งขันปราสาททาเคชิ พยายามเท่าไหร่ก็ยังตกน้ำ

การเพิ่มประสิทธิภาพ WordPress

วิธีการแก้

ว่ากันว่าบางครั้งคุณต้องออกจากปัญหาและ มอง ปัญหาเพื่อหาสาเหตุที่แท้จริง

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

ดังนั้น สิ่งที่ฉันทำคือแทนที่จะเป็นคำขอเดียวที่ทำการอัปเดตทั้งหมด ฉันแยกการ เรียก AJAX ที่ต่อเนื่องกันหลาย ๆ ครั้ง ที่ทำการอัปเดตจำนวนน้อยลงและกำจัดข้อผิดพลาดการหมดเวลาโดยสิ้นเชิง

การเพิ่มประสิทธิภาพ WordPress
คำขอ Ajax อัปเดตแบทช์ผู้จัดการอัจฉริยะ

ปรับปรุงการแก้ปัญหา

ในตอนนี้ วิธีการแบ่งคำขอเดี่ยวออกเป็นคำขอ AJAX ที่มีขนาดเล็กกว่าหลายๆ คำขอ ไม่เพียงแต่แก้ไขข้อผิดพลาดการหมดเวลาเท่านั้น แต่ยัง ปรับปรุงการอัพเดตแบบกลุ่ม UX ด้วย

ขณะนี้ผู้จัดการร้านกำลังได้รับการอัปเดตเกี่ยวกับความคืบหน้าของการอัปเดต ซึ่งเพียงเพิ่มความมั่นใจในผลิตภัณฑ์

วิธีการเดียวกันนี้ทำให้ Smart Manager สามารถจัดการการอัปเดตแบบกลุ่มสำหรับร้านค้า WooCommerce ที่มีรูปร่างและขนาดใดก็ได้ และทำให้ Smart Manager กลายเป็นหนึ่งในปลั๊กอินที่ขายดีที่สุดของ StoreApps

สภาพแวดล้อมการโฮสต์ที่ใช้ร่วมกันบังคับให้เราเขียนปลั๊กอินใหม่อย่างไร

ปัญหา

สำหรับปลั๊กอินการรายงานใดๆ สิ่งสำคัญอย่างยิ่งคือการให้ข้อมูลสถิติที่แม่นยำไม่เพียงแต่อย่างรวดเร็ว ในตอนนี้ การรับสถิติการรายงานจำเป็นต้องมีการสืบค้นหลายรายการที่เกี่ยวข้องกับ การเข้าร่วมตาราง WordPress หลัก 2 ตาราง เช่น โพสต์และโพสต์เมตา

การเพิ่มประสิทธิภาพ WordPress
โพสต์ WordPress Postmeta ERD

ตามที่เห็นข้างต้น JOIN มีราคาแพง มาก

ใน Smart Reporter (โซลูชันการรายงานของเราสำหรับ WooCommerce) เราแสดงสถิติการรายงานที่แตกต่างกัน 20 รายการในการดูหน้าเว็บเดียวและนั้นก็เช่นกันเมื่อโหลดหน้าเว็บ

วิธีการแก้

ดังนั้นฉันจึงปฏิบัติตามแนวทางเดียวกันกับที่โซลูชันการรายงานส่วนใหญ่ทำตาม ซึ่งก็คือ การสร้างตารางสรุป เช่น ตารางแบบกำหนดเองที่มีโครงสร้างเรียบ

ตารางนี้จะมีข้อมูลสรุปของข้อมูลทั้งหมดที่ปลั๊กอินต้องการ ดังนั้นจึงช่วยขจัดการใช้การรวมและปรับปรุงเวลาในการโหลดหน้าเว็บ

การเพิ่มประสิทธิภาพ WordPress
ตารางสรุปรายงานอัจฉริยะ

นอกจากนี้ เพื่อให้ตารางสรุปเหล่านี้อัปเดตอยู่เสมอ เราจึงใช้การดำเนินการและตัวกรองของ WordPress

สรุปบทเรียน

  • ปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุดให้มากที่สุด
  • ไม่มีคำถามในลูป
  • หลีกเลี่ยงการรวมที่ซับซ้อนขนาดใหญ่
  • ทำในระดับ MySQL ได้มากกว่าที่ระดับ PHP
  • ลงลึกในโค้ด
  • สรุป / กำหนดเอง / ตารางชั่วคราว
  • ให้ความสนใจกับ UX – การตอบสนอง การแจ้งเตือน...
  • คุณกำลังแก้ปัญหาที่ถูกต้องหรือไม่?

คุณเลือกอะไร

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