หลักการของ Internet Speed Test

posted on 20 Apr 2009 07:38 by aima

ช่วงนี้ผมมีโอกาสทำงานกับเว็บใหญ่เว็บนึง

ซึ่งมีสมาชิกเข้าชม 20,000 คน/วัน มีการเรียกหน้าเพจเฉลี่ยถึง 500,000 ครั้ง/วัน
ตั้งแต่ศึกษาด้านเว็บมา เป็นครั้งแรกที่ได้ทดสอบทฤษฎีกันแบบวันต่อวันกันเลย

พลาดที Server ล่ม แล้วผมก็พลาด Syntax บ่อยมากๆ ยังดีที่ผมสัมภาษณ์ที่บริษัทเกมไม่ผ่าน LOL
ไม่งั้นจากเสียงโวยสองหมื่นเสียง อาจกลายเป็นเฉียดแสนไปได้ :P

...แล้วเหงื่อจะท่วมกว่านี้อีกเยอะ!

----------------------------------

ด้วยเหตุนี้ผมจึงมีโจทย์แปลกๆ ให้ทำทุกๆ วัน หนึ่งในนั้นคือเรื่อง Speed Test ครับ
คือเจ้าของเว็บอยากให้มี เพราะสมาชิกคงอยากเห็นความแรงของเน็ตตัวเองอยู่

ก็เว็บบิทนี่นะ :P

วิธีที่จะเช็คสปีดได้ตามความคิดของผม

  • ยัด Cookies ขนาดใหญ่ (เขียนค่าตัวแปรเป็นข้อความยาวๆ) แล้วดัก javascript:onload
  • บันทึกวันเวลาที่โหลดเสร็จ
  • ส่งค่า Cookies กลับไปที่ Server พร้อมทั้งวันเวลาที่บันทึกไว้

สรุปคือส่งอะไรก็ได้ให้ขนาดมันถึงแค่นั้นแหละ :P

อีกวิธีคือแบ่งเป็นเฟรม ซึ่งเป็นวิธีเดียวกับที่ผมใช้เช็คตอนทำ Cross-site Image Upload
ก็ใช้ javascript:onload เหมือนกัน แต่คราวนี้ไปดักที่เฟรมแทน

ปัญหาคือถ้าใช้ Cookies อย่างเดียว ก็ไม่รู้ว่าไฟล์มันเริ่มโหลดจริงเมื่อไหร่ เพราะมันจะมี Delay ระหว่าง Server กับ Client อีก

ดังนั้นผมก็เลยโกงนิดหน่อยโดยดูการทำงานของ Pangya Speed Test

..สร้างไฟล์ Binary ขนาด 3 MB แล้ว คร่อม Comment HTML ไว้
และเนื่องจากบราวเซอร์ปัจจุบัน อ่าน Source Code จากบนลงล่าง
ดังนั้นเราจึงใส่ Javascript เก็บตัวแปร "เวลาก่อนโหลด" ได้เลย
และหลัง Comment นั้นก็เก็บอีกตัวแปรนึงเป็น "เวลาโหลดเสร็จ"

หลังจากนั้นจะไปคำนวณอะไรก็ตามสะดวก

ส่วนการอัพโหลดนั้นไม่มี ส่วนใหญ่จะใช้ FTP Server แต่ผมว่าจะลองเอามันยัดใส่ Cookies ดู
เพราะ javascript มีคำสั่งสร้าง Cookies อยู่แล้วนี่ อันนี้ต้องลองดูครับ : )

เพราะเวลา Request กลับไปที่ Server มักจะส่ง Cookies ในโดเมนกลับไปด้วย
ซึ่งมันก็ต้องใช้เวลาอยู่ ถ้าส่งข้อความยาวๆ (ในหลายๆ เว็บจะส่งราวๆ 250kB เพราะส่วนใหญ่ขาอัพจะน้อย)

AJAX มีประโยชน์ตรงนี้แหละ ถ้าใช้มันผมก็ส่ง Request หลายเที่ยวได้โดยไม่ต้องเปลี่ยนหน้า

----------------------------------

ที่เขียนมาเป็นแนวทางเฉยๆ แต่ผมมองแล้วว่ามัน Implement ขึ้นมาได้
แต่ยังไม่รวมถึงเรื่อง Security หรือเวลาหน่วงระหว่างเครื่อง ซึ่งผมคิดว่าเอาค่าประมาณก็โอเคอยู่

จากที่เคยวัดความหน่วงจะมีค่าใกล้เคียงกับตอนที่เราใช้คำสั่ง ping ไปยัง Server ครับ
(ช้าที่สุดราวๆ 0.5 วินาที ซึ่งส่งผลเล็กน้อยกับสปีดสูงๆ)

----------------------------------

ทำงานที่นี่ผมนึกถึงค่ายเกมจริงๆ ว่า Game Master กับ Web Master มันต่างกันตรงไหน?
ผมว่ามันใช้ "ความอึด" และต้องใส่ใจกับ Feedback ของผู้ใช้ / ผู้เล่น เหมือนๆ กัน

ผมยังไม่ตัดใจจากการทำงานกับบริษัทเกม แต่ปัญญาตอนนี้ (+Error อีกหลายครั้ง)
สงสัยว่าผมต้องฝึกกันอีกนาน : P

 

ป.ล. สงกรานต์ปีนี้ทำสถิติเว็บร่วงซะติดดินเลย สงสัยจะหยุดกันยาวไปหน่อย
(เริ่มกระเตื้องขึ้นเมื่อวานนี้)

Comment

Comment:

Tweet