UPDATE! สิ่งที่ Odoo16 ทำเพื่อเพิ่มประสิทธิภาพของระบบ
การปรับปรุงการทำงานของ Odoo Version 16 สามารถแบ่งได้ 4 หัวข้อหลักด้วยกัน
21 October, 2022 by
UPDATE! สิ่งที่ Odoo16 ทำเพื่อเพิ่มประสิทธิภาพของระบบ
Isares Srirattanapaisarn (Bright)
| No comments yet

 

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 กันนะ 

UPDATE! สิ่งที่ Odoo16 ทำเพื่อเพิ่มประสิทธิภาพของระบบ
Isares Srirattanapaisarn (Bright) 21 October, 2022
Share this post
Tags
Archive
Sign in to leave a comment