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 โดยใช้ไวท์ลิสต์ของอาร์กิวเมนต์ที่แก้ไขการเลือกหน้า
ผลลัพธ์
เราได้วัดประสิทธิภาพของไซต์ของเราเองระหว่างการอัปเดตเวอร์ชัน คุณจะเห็นได้ว่าโหลดลดลง จากนั้นเพิ่มขึ้น (เมื่ออินเด็กซ์ของตารางยังไม่ได้รับการปรับให้เหมาะสม) และตอนนี้กลับมาต่ำกว่าเดิมแล้ว




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

