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
ตัวอย่างการใช้ BlockDOM
จากตัวอย่างจะสังเกตได้ว่า จากผลลัพท์ด้านล่างจะมีการนำคำ BlockDOM ที่เราส่งไปตอนเรียก subBlock จะไปแทนที่ <blockdom-text-0/>และตัว subBlock จะไปแทนที่ใน Block ที่ <blockdom-child-0/> อีกที โดยที่ไม่ได้มีการประกาศเป็น node เลย
โดยสิ่งที่แตกต่างจาก Virtual DOM ปกติคือ จะมีการกำหนด block ไว้เพื่อใช้ในการแทนค่าสิ่งที่จะมีการเปลี่ยนแปลงเพื่อให้ render ใหม่แค่เฉพาะ block นั้น ๆ เมื่อค่าใน block มีการเปลี่ยน โดยที่ไม่ต้องเปลี่ยนแปลงทั้ง 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 กันนะ 😉
สนใจนำ Odoo มาใช้งานในองค์กร ติดต่อ Roots, Odoo Official Partner ได้เลย คลิก!
UPDATE! สิ่งที่ Odoo16 ทำเพื่อเพิ่มประสิทธิภาพของระบบ