ลดกันเห็นๆกับ ob_gzhandler
Thursday, August 14th, 2008วันนี้ผมได้มีโอกาสลองของกับเว็บตัวเองอีกแล้วกับการใช้ ob_gzhandler ในเว็บไซต์ Mocyc.com
ก็เนื่องมาจากผมเองชอบโมเว็บอยากให้เว็บไซต์ใช้ทรัพยากรในเครื่องให้น้อยที่สุด เครื่อง Server ทำงานได้สบายที่สุด ดังนั้นในเว็บ Mocyc.com จึงได้มีการใช้แนวคิดการออกแบบหลายๆอย่างเช่น
- ลดและเลี่ยงการใช้ Join Table Database ให้น้อยที่สุด หรือ ไม่ใช้เลย
- เขียนสคริป Cache เพื่อลดอัตราการติดต่อกับ MySQL ดาต้าเบส
ซึ่งก็ได้ผลดีและทำให้ Server ที่ใช้งานอยู่นั้นทำงานได้สบายๆ ไม่หนักมากมายนัก
และล่าสุด เมื่อราวๆ บ่าย 2 ของวันที่ 14 สค. 51 ผมเองก็ได้จูนเว็บ Mocyc.com อีกครั้ง โดยการใช้งาน ob_gzhandler หรือใช้ความสามารถของ gzip ครับ

ดูจากกราฟนะครับ เมื่อวานยังไม่ได้ใช้งาน ob_gzhandler ลองเทียบกับวันนี้หลัง 15.00 น. ดูครับ CPU LOAD ลดลงเป็นครึ่งเลยครับ ว๊าววววว…..
ob_gzhandler หมายความว่า ในกรณีที่ browser ของเราสามารถอ่านเวปที่มีการบีบอัดได้ ( header ที่ส่ง request ไปยัง server จะมีคำว่า enable gzip) พอเจ้า php (ที่มีการระบุใน script ว่า ob start , ob_gzhandler ) รู้ว่า browser ของเราสามารถรับเวปที่มีการบีบอัดได้ มันจะส่ง html ที่มีการบีบอัดมาแทน ดังนั้น แทนที่จะส่งมา 50,000-200,000 ไบต์ มันก็จะเหลือมาแค่ 5,000-10,000 ไบต์ แล้วมาคลายที่เครื่องเราแทน
ก่อนที่จะเอาลองเทสบนเว็บ Mocyc.com ผมได้ลองเทสใน localhost ในเครื่อง โดยการคิวรี่ข้อมูลมาแสดงผลจำนวน 1,000 ข้อมูล ในกรณีที่ไม่ได้ใช้ ob_gzhandler ใช้เวลาประมาณ 0.001 - 0.0012 sec แต่เมื่อผมใช้ ob_gzhandler จะใช้เวลาเฉลี่ยประมาณ 0.0009 - 0.001 sec. ซึ่งเทียบแล้วก็คือไวกว่าปกติครับ ก็เลยนำมาทดสอบใน Mocyc.com เลยครับ ซึ่งก็ได้ผลดังกราฟครับ
การใช้งานก็ไม่มีอะไรมากมายเลยครับ ก็แค่ใช้คำสั่ง
ob_start(’ob_gzhandler’);
ในกรณีที่ต้องการให้มีการบีบอัดข้อมูล
ob_start();
ในกรณีที่ไม่ต้องการบีบอัดข้อมูล
เดี๋ยวลองดูผลต่อไป แต่จากการทดสอบดูแล้วค่อนข้างน่าพอใจมากครับกับการเพิ่มคำสั่งเพิ่มไปแค่นิดเดียว
หากลองสังเกตุจะเห็นว่าช่วง 4 ทุ่มจะสูง เพราะเป็นช่วงที่คนเข้าเว็บเยอะครับ ส่วนตอนช่วงเที่ยงคืน นั่นคือ ผมสั่งให้ระบบผมทำงานอัตธนมัติในการลบประกาศซื้อขายที่หมดอายุ รวมไปถึงจัดการระบบดาต้าเบสต่างๆ โดยผมเขียนโปรแกรมสั่งให้มันทำงานช่วง 00.00 น. ครับ



















