Process เร็วได้ด้วย cache
Thursday, April 17th, 2008ไม่แน่ใจว่ายังจำที่ผมเขียนเรื่องการเขียนสคริปจับเวลา Process หน้าเว็บได้อยู่ไหม? หากจำไม่ได้ก็ลองย้อนไปดูที่ http://www.myblog.in.th/?p=193 นะครับ
ตอนนี้ผมกำลังออกแบบหน้าเว็บ Mocyc ใหม่ และออกแบบหน้าเว็บทั้งหมดด้วยการสร้าง Cache File เพื่อลดภาระการอ่านข้อมูลจากดาต้าเบส ให้ลดลง เพื่อเพิ่มประสิทธิภาพในการประมวลผล และ รองรับ Process ให้มากยิ่งขึ้น
อันนี้เป็นผลของ CMusedcar.com ซึ่งไม่ได้มีระบบ Cache เลย (อนาคตผมคิดว่าจะเขียนลงไป)

0.0336 วินาทีในการประมวลผลหน้าเว็บ
ลองมาดูที่ผมทำหน้าเว็บใหม่ของ Mocyc.com ดูบ้าง

การประมวลผลครั้งแรกเพื่อสร้าง Cache

การประมวลผลเมื่อสร้าง Cache เสร็จแล้ว
จากในรูป จะมี 2 รูปนะครับ รูปแรกเป็นการประมวลผลในขณะที่ไม่มี Cache หรือว่า Cache หมดอายุ จะเห็นได้ว่าการประมวลผลเยอะกว่าเมื่อสร้าง Cache แล้วหลายเท่าตัวเลยทีเดียว สมมุติว่าใน 10 นาทีมีคนเปิดหน้าเว็บผม 1000 ครั้ง จะมีแค่ 1 ครั้งเท่านั้นที่ใช้เวลา 0.0169 วินาที อีก 999 ครั้งจะใช้เวลาแค่ 0.0012 วินาทีเท่านั้น
ซึ่งการสร้าง Cache นั้นก็มีหลายวิธี แล้วแต่คนเขียนโปรแกรมจะถนัด ตั้งแต่ การสร้างเป็น XML การสร้างเป็น Text File หรือแบบสร้างเป็น HTML ไว้
ซึ่งผมเลือกสร้างให้เป็น HTML ไฟล์ โดยเก็บข้อมูลทั้งหมดเป็น HTML สำเร็จไปเลย แล้วก็นำมา Include เข้าหน้าที่ต้องการแสดงไปเลย เพราะเราไม่ต้องมานั่งเขียนโปรแกรมเพื่อแปลง หรือ อ่านค่า XML ต่างๆมาแสดงอีก
ผมก็ใช้วิธี อ่านดาต้าเบส จากนั้นก็ทำการสร้างข้อมูลต่างๆลงในไฟล์ HTML ไปเลย จากนั้นก็กำหนดเวลาว่าจะให้สร้าง Cache ใหม่ทุกๆกี่นาที แล้วค่อยติดต่อดาต้าเบสอีกครั้ง ซึ่งทำให้เครื่องทำงานได้เบาลงมากๆครับ และรองรับ Process ได้มากขึ้นอีกด้วย
มาต่ออีกหน่อย เห็นเคยมีหลายๆคนใช้ CMS ประเภท Nuke แล้วบ่นว่า Server รับไม่ไหว ทั้งๆที่คนเข้าเว็บก็ไม่ได้มากมายอะไรเลย ลองมาดูเวลาในการ Process หน้าเว็บดูกันครับ

ใช้เวลาตั้ง 0.83

อันนี้ก็ 0.2132 แหน่ะ
ทำไมต้องสนใจค่านี้หล่ะ ก็ลองมาเทียบๆกันดูนะครับว่าหากมีการประมวลผลเว็บไซต์ใน 1 ครั้งเนี่ยใช้เวลาไปเท่าไหร่ อย่าง 0.83 ก็เท่ากับว่า 1 คนที่เปิดหน้าเว็บก็แทบจะใช้เวลาหมดไปใน 1 วินาทีแล้ว แต่หากเทียบกับการประมวลผลที่ 0.0012 ใช้เวลาน้อยกว่ากันกว่า 100 เท่าเลยทีเดียว
ดังนั้นหากมีคนเข้าพร้อมๆกันใน 1 วินาที ยิ่งเวลา Process น้อยเท่าใดก็จะทำให้รองรับคนเข้าชมพร้อมๆกันใน 1 วินาทีได้มากขึ้นเท่านั้น



















