4 หัวข้อหลักที่ Odoo16
ได้มีการปรับปรุง
1. Web client
Odoo ได้ทำการเปลี่ยนแปลง JavaScript ที่ใช้ก่อนหน้านี้ให้ไปใช้ Owl แทบทั้งหมด ยกเว้น Odoo Studio
ในส่วนของ CSS นั้น ได้เปลี่ยนจาก Bootstrap 4 เป็น 5.1.3 และมีการ refactor code ในส่วนของ Scss โดยบรรทัดลดลงไปถึง 68%
มีการเปลี่ยนจากการใช้ Long Polling ไปใช้เป็น Web Socket ซึ่งจะช่วยลด latency ได้
จากรูปจะเห็นได้ว่า Long Polling จะเป็นลักษณะยิง request เป็น interval ไปเรื่อยๆ ทำให้ latency สูงกว่า ซึ่งแตกต่างจาก Websocket ที่จะยิงไปแค่ครั้งแรกครั้งเดียวจากนั้น Server จะสามารถส่งกลับมากี่ครั้งก็ได้
Owl มีการนำ BlockDOM มาใช้ในการ render
BlockDOM
โดยสิ่งที่แตกต่างจาก Virtual DOM ปกติคือ จะมีการกำหนด block ไว้เพื่อใช้ในการแทนค่าสิ่งที่จะมีการเปลี่ยนแปลง เพื่อให้ render ใหม่แค่เฉพาะ block นั้นๆ เมื่อค่าใน block มีการเปลี่ยน โดยที่ไม่ต้องเปลี่ยนแปลงทั้ง node โดยเปรียบเทียบรูปแบบง่ายๆ ดังนี้
รูปแบบเก่า
รูปแบบใหม่
ตัวอย่างการใช้ BlockDOM
จากตัวอย่าง จะสังเกตได้ว่าจากผลลัพท์ด้านล่างจะมีการนำคำ BlockDOM ที่เราส่งไปตอนเรียก subBlock จะไปแทนที่ <blockdom-text-0/>และตัว subBlock จะไปแทนที่ใน Block ที่ <blockdom-child-0/> อีกทีโดยที่ไม่ได้มีการประกาศเป็น node เลย
2. Network
ลดจำนวนการเรียก HTTP ลง 60%
ย้ายการโหลดข้อมูล assets ส่วนใหญ่ไปให้กับ Nginx เพื่อลดการใช้ workers ของ Odoo
3. Business Features
Computed field มีการเพิ่ม parameters ใหม่เข้ามาที่ชื่อว่า precompute เพื่อลดจำนวนการ qurey ลง เมื่อมีการตั้งค่าเป็น True จะเป็นการเรียกฟังก์ชั่น computeก่อนที่จะ insert ข้อมูล
4. Server Framework
เปลี่ยนแปลงวิธีการเก็บการแปรภาษา จากก่อนหน้าที่ทำการเก็บไปที่ table ir.translation ที่แยกออกมา เป็นเก็บไปที่ master data นั้นๆ เลยเพื่อลดการ join โดยใช้เป็นลักษณะ JSONB
มีการทำ Fragment Caching ในส่วนของหน้า Web สามารถกำหนด cache เป็นส่วนๆของ qweb ได้
จากตัวอย่าง ส่วนที่เราใส่ t-cache = "True" ไว้จะทำให้มีการ cache tag ส่วนนั้นไว้ หรือถ้าเราใส่ parameters ใน t-cache เช่น t-cache = "products, pricelist" จะทำให้มีการดึงค่าใหม่เมื่อค่าที่เราใส่ไว้มีการเปลี่ยนแปลง
ปรับลดให้มีการเก็บ session เมื่อมีการใช้งานจริงเท่านั้น ทำให้ลดลงจาก 30M (117 Gb) เหลือเพียงแค่ 200k (0.8 Gb) เท่านั้น
สรุป คร่าวๆ คือ Odoo Version 16 มีการพัฒนาทั้งในส่วนของ Web Client, Network, Business Features และ Server Framework เพื่อตอบโจทย์กับผู้ใช้งานมากยิ่งขึ้น แถมยังเพิ่มประสิทธิภาพของระบบอีกด้วย หวังว่าผู้ใช้งานทั้งฝั่ง Functional และฝั่ง Technical จะชอบใจกันการใช้งาน Odoo16 กันนะ