[K2 SmartForms] – Performance Improvement

สวัสดีครับ พอดีช่วงนี้มีโอกาสไปทำ performance improvement ให้ลูกค้าที่หนึ่ง เลยถือโอกาสมาเล่าส่วนที่น่าสนใจให้ฟังกัน ก่อนจะอ่านบทความนี้ ควรจะอ่าน link ตามด้านล่างนี้ก่อน

หลังจากอ่านตาม link ด้านบนแล้ว เราก็จะทราบว่า ถ้าเป็นการ load data ตอนเปิด form ทั่วๆ ไป ควรจะใช้เป็น asynchronous ทั้งหมด ยกเว้นในกรณีต้องการใช้ข้อมูลที่เรา load มาก่อนหน้านี้ทำงาน ถึงจะต้องไปใช้ sequential ที่เป็น then แทน

ส่วนที่น่าสนใจคือ ใน version หลังๆ ของ K2 event ตอน load form จะมี Initializing และ Initialized โดย Initializing จะทำงานตอนเปิด form ส่วน Initialized จะทำงานหลัง Initializing อีกที จากบทความ http://www.datalytyx.com/how-to-improve-k2-smartforms-performance/ แนะนำว่า ถ้ามีการ load data ต่างๆ เช่น ดึงข้อมูลเข้า dropdownlist ให้ไปทำที่ Initialized ส่วน Initializing ใช้สำหรับ set property ต่างๆ และ action ใน Initializing ควรจะทำเป็น asynchronous ทั้งหมด

 

ส่วนถัดมาที่เราสามารถทำได้คือ layer ที่เป็น IIS แล้ว ซึ่งที่เคยลองจะมีตามด้านล่าง

  • ตอน set up K2 ถ้าตาม default เราจะไม่ค่อยแยก application pool ของ designer site กับ runtime site ออกจากกัน ให้ลองแยกออกมาดู เพราะเราจะปรับ Maximum Worker Process เพิ่มขึ้น (ค่า default เป็น 1) โดยจะปรับเป็นเท่าไหร่นั้น ต้องดู resource ของเครื่องด้วย เพราะการปรับส่วนนี้จะทำให้กิน memory เพิ่มขึ้น

Maximum Worker Processes

  • ปิด IIS Logging ของ runtime site เพื่อลดเวลาในการทำงานของ IIS

 

เท่าที่ลองดู การ tuning ในส่วนของ rule ของ K2 จะเห็นผลเยอะกว่าที่ tune ในส่วน IIS ดังนั้นควรจะ focus ในการ improve performance ของส่วน rule ใน K2 ก่อน ซึ่งใน blog นี้จะไม่ได้พูดถึงมาก เพราะสามารถหาอ่านได้ใน link ที่แจ้งไปตอนต้นครับ แต่อย่างไรก็ดีต้องไม่ลืมว่า การออกแบบหน้าจอ และ behavior ในการทำงานเป็นสิ่งสำคัญในการที่ form จะมี performance ที่ดีหรือไม่ดีครับ แล้วพบกันใหม่ครั้งหน้านะครับ