UPDATE! สิ่งที่ Odoo16 ทำเพื่อเพิ่มประสิทธิภาพของระบบ

การปรับปรุงการทำงานของ Odoo Version 16 สามารถแบ่งได้ 4 หัวข้อหลักด้วยกัน
21 ตุลาคม ค.ศ. 2022 โดย
Administrator

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 ได้

Odoo ได้ทำการเปลี่ยนแปลง JavaScript ที่ใช้ก่อนหน้านี้ให้ไปใช้ Owl แทบทั้งหมด ยกเว้น Odoo Studio


​จากรูปจะเห็นได้ว่า Long Polling จะเป็นลักษณะยิง request เป็น interval ไปเรื่อย ๆ ทำให้ latency สูงกว่า ซึ่งแตกต่างจาก Websocket ที่จะยิงไปแค่ครั้งแรกครั้งเดียวจากนั้น Server จะสามารถส่งกลับมากี่ครั้งก็ได้

  • Owl มีการนำ BlockDOM มาใช้ในการ render

BlockDOM

Owl มีการนำ BlockDOM มาใช้ในการ render

ตัวอย่างการใช้ BlockDOM

มีการนำคำ BlockDOM ที่เราส่งไปตอนเรียก subBlock จะไปแทนที่ <blockdom-text-0/>และตัว subBlock จะไปแทนที่ใน Block ที่ <blockdom-child-0/> อีกที โดยที่ไม่ได้มีการประกาศเป็น node เลย

​จากตัวอย่างจะสังเกตได้ว่า จากผลลัพท์ด้านล่างจะมีการนำคำ BlockDOM ที่เราส่งไปตอนเรียก subBlock จะไปแทนที่ <blockdom-text-0/>และตัว subBlock จะไปแทนที่ใน Block ที่ <blockdom-child-0/> อีกที โดยที่ไม่ได้มีการประกาศเป็น node เลย

​โดยสิ่งที่แตกต่างจาก Virtual DOM ปกติคือ จะมีการกำหนด block ไว้เพื่อใช้ในการแทนค่าสิ่งที่จะมีการเปลี่ยนแปลงเพื่อให้ render ใหม่แค่เฉพาะ block นั้น ๆ เมื่อค่าใน block มีการเปลี่ยน โดยที่ไม่ต้องเปลี่ยนแปลงทั้ง node โดยเปรียบเทียบรูปแบบง่าย ๆ ดังนี้

  • รูปแบบเก่า

จะมีการกำหนด block ไว้เพื่อใช้ในการแทนค่าสิ่งที่จะมีการเปลี่ยนแปลงเพื่อให้ render ใหม่แค่เฉพาะ block นั้น ๆ

  • รูปแบบใหม่

จะมีการกำหนด block ไว้เพื่อใช้ในการแทนค่าสิ่งที่จะมีการเปลี่ยนแปลงเพื่อให้ render ใหม่แค่เฉพาะ block นั้น ๆ

2. Network

  • ลดจำนวนการเรียก HTTP ลง 60%
  • ย้ายการโหลดข้อมูล assets ส่วนใหญ่ไปให้กับ Nginx เพื่อลดการใช้ workers ของ Odoo

Odoo 16 มีการย้ายการโหลดข้อมูล assets ส่วนใหญ่ไปให้กับ Nginx เพื่อลดการใช้ workers ของ Odoo

3. Business Features

  • Computed field มีการเพิ่ม parameters ใหม่เข้ามาที่ชื่อว่า precompute เพื่อลดจำนวนการ qurey ลง เมื่อมีการตั้งค่าเป็น True จะเป็นการเรียกฟังก์ชั่น compute ก่อนที่จะ insert ข้อมูล

Odoo 16 ใน Computed field มีการเพิ่ม parameters ใหม่เข้ามาที่ชื่อว่า precompute เพื่อลดจำนวนการ qurey ลง

4. Server Framework

  • เปลี่ยนแปลงวิธีการเก็บการแปลภาษา จากก่อนหน้าที่ทำการเก็บไปที่ table ir.translation ที่แยกออกมา เป็นเก็บไปที่ master data นั้น ๆ เลยเพื่อลดการ join โดยใช้เป็นลักษณะ JSONB

Odoo 16 ปลี่ยนแปลงวิธีการเก็บการแปลภาษา จากก่อนหน้าที่ทำการเก็บไปที่ table ir.translation ที่แยกออกมา เป็นเก็บไปที่ master data นั้น ๆ เลยเพื่อลดการ join โดยใช้เป็นลักษณะ JSONB

  • มีการทำ Fragment Caching ในส่วนของหน้า Web สามารถกำหนด cache เป็นส่วนๆของ qweb ได้

มีการทำ 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 ได้เลย คลิก!

Start writing here...

Administrator 21 ตุลาคม ค.ศ. 2022
แชร์โพสต์นี้
แท็ก