WPML

WPML 3.5 มีการเปลี่ยนแปลงครั้งใหญ่สำหรับการแปลสตริง เมื่อเราเปิดใช้งานจริง เราได้พบกับหลายกรณีที่ไม่ปรากฏขึ้นระหว่างการพัฒนา การอัปเดตที่ตามมาได้จัดการกับปัญหาทั้งหมดและปรับปรุงประสิทธิภาพให้ดียิ่งขึ้น

การแก้ไขตั้งแต่ WPML 3.5


  • แก้ไข uncaught exception ในกรณีที่คอลัมน์ domain_name_context_md5 ไม่มีอยู่ในตาราง icl_strings

  • แก้ไข Fatal error: Uncaught exception ‘InvalidArgumentException’ with message ‘Argument ID must be numeric and greater than 0 เมื่อกรองลิงก์ถาวร

  • แก้ไข fatal error ที่ปรากฏขึ้นระหว่างการอัปเกรด: WordPress database error: specified key was too long; max key length is 1000

  • แก้ไข Fatal error: Declaration of WPML_Post_Element::get_type() must be compatible with that of WPML_Translation_Element::get_type() สำหรับ PHP 5.2

  • ลบเครื่องหมายแบ็กสแลชนำหน้า \ เพื่อหลีกเลี่ยงคำเตือนใน PHP เวอร์ชันก่อน 5.3

การปรับปรุงความเร็ว


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

  • แยกตารางขนาดใหญ่ที่มีข้อมูลซ้ำซ้อนออกเป็นสองตารางขนาดเล็กที่มีประสิทธิภาพ

  • ปรับปรุงอินเด็กซ์ของตารางให้เหมาะสม

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

ผลลัพธ์


เราได้วัดประสิทธิภาพของไซต์ของเราเองระหว่างการอัปเดตเวอร์ชัน คุณจะเห็นได้ว่าโหลดลดลง จากนั้นเพิ่มขึ้น (เมื่ออินเด็กซ์ของตารางยังไม่ได้รับการปรับให้เหมาะสม) และตอนนี้กลับมาต่ำกว่าเดิมแล้ว
WPML 3.4 - การแปลสตริงใช้เวลาโหลดนานขึ้นเนื่องจากเรากำลังโหลดสตริงจำนวนมากล่วงหน้า
WPML 3.4 – การแปลสตริงใช้เวลาโหลดนานขึ้นเนื่องจากเรากำลังโหลดสตริงจำนวนมากล่วงหน้า
เวลาโหลดของการแปลสตริงลดลง แต่ตอนนี้มีตาราง string_pages ขนาดใหญ่
เวลาโหลดของการแปลสตริงลดลง แต่ตอนนี้เรามีตาราง string_pages ขนาดใหญ่
เราแยกตาราง string_pages ออกเป็นสองตารางขนาดเล็ก แต่อินเด็กซ์ที่เพิ่มเข้ามาทำให้การเลือกข้อมูลช้าลง
เราแยกตาราง string_pages ออกเป็นสองตารางขนาดเล็ก แต่อินเด็กซ์ที่เพิ่มเข้ามาทำให้การเลือกข้อมูลช้าลง
ตารางขนาดเล็กลงและอินเด็กซ์ที่ถูกต้อง ในที่สุดเราก็พร้อมใช้งานแล้ว
ตารางขนาดเล็กลงและอินเด็กซ์ที่ถูกต้อง ในที่สุดเราก็พร้อมใช้งานแล้ว

ตัวเลขสัมบูรณ์ในกราฟทั้งหมดนี้มีความสำคัญน้อยกว่า เนื่องจากถูกบันทึกในวันต่าง ๆ ของสัปดาห์ ในวันศุกร์ การเข้าชมของเราจะต่ำกว่าวันจันทร์มาก เพื่อทำความเข้าใจการเปลี่ยนแปลง ให้ดูที่สัดส่วนระหว่างส่วนต่าง ๆ คุณจะเห็นว่าในตอนแรก การเข้าถึง icl_strings ใช้เวลาพอ ๆ กับการดึงข้อมูลโพสต์ (ซึ่งไม่ใช่เรื่องดี) ตอนนี้ การเข้าถึงฐานข้อมูลทั้งหมดของ WPML ใช้เวลาโดยเฉลี่ย 1/3 ของคิวรีโพสต์ สิ่งนี้มีความสำคัญมาก เนื่องจาก WPML จำเป็นต้องโหลดสตริงจำนวนมาก ในขณะที่ WordPress ต้องการโพสต์เพียงไม่กี่รายการ

กระบวนการที่ดีขึ้นในครั้งต่อไป


เราจำเป็นต้องเผยแพร่การอัปเดตนี้ก่อนที่จะสามารถรันการวัดประสิทธิภาพที่สมบูรณ์ได้ เนื่องจากมีการเปลี่ยนแปลงสำหรับ WordPress 4.6 ในอนาคต เราจะตรวจสอบให้แน่ใจว่าได้แยกการปรับปรุงประสิทธิภาพออกจากความเข้ากันได้กับ WordPress ทันทีที่ WordPress เวอร์ชันใหม่เข้าสู่สถานะ "release candidate" เราจะออกเวอร์ชันย่อยที่มีเฉพาะการเปลี่ยนแปลงด้านความเข้ากันได้ เราจะเผื่อเวลาไว้สำหรับการรันการเปลี่ยนแปลงด้านประสิทธิภาพที่ใช้เวลานานขึ้น ซึ่งไม่เกี่ยวข้องกับการแก้ไขข้อบกพร่องและการอัปเดตความเข้ากันได้ และจะเผยแพร่ก็ต่อเมื่อเราพอใจกับผลลัพธ์เป็นอย่างมากแล้วเท่านั้น

เวอร์ชันที่เผยแพร่ถัดไปของ WPML จะยังคงเน้นที่ความเสถียรและประสิทธิภาพ ไซต์ 99% ที่ใช้งาน WPML ทำงานได้อย่างราบรื่นในขณะนี้ แต่มีบางไซต์ที่ใช้การกำหนดค่า "เฉพาะตัว" ของเว็บเซิร์ฟเวอร์ PHP หรือฐานข้อมูล เราจะจัดการกับปัญหาเหล่านี้ในเวอร์ชันย่อยที่กำลังจะมาถึง นอกจากนี้เรายังรวมการเพิ่มประสิทธิภาพการทำงานเพิ่มเติมอีกเล็กน้อย ซึ่งจะทำให้ทั้งหน้าจัดการเว็บไซต์และส่วนหน้าเว็บไซต์ทำงานได้เบาลง

มีข้อเสนอแนะหรือไม่


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

พบว่าสิ่งนี้มีประโยชน์หรือไม่? แชร์บทความนี้: