ช่วงนี้ KnowledgeVolution เพิ่ม features ที่ใช้เทคโนโลยี AJAX (Asynchronous JavaScript and XML) อยู่หลายอย่างด้วยกัน อย่าหนึ่งคือ Page Visit จะ update เองอัตโนมัติทุก 10 นาที

วันนี้ผมไปประชุมตอนเช้า พอผมกลับมาพบว่า GotoKnow ช้ามาก

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

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

แต่ถ้าเป็นหน้าที่เป็นสารบัญของบล็อกด้วยแล้ว นั่นคือ 15 requests ทุกสิบนาที

ถ้าเปิดไว้สักสิบหน้าแล้วไปทำธุระเดี๋ยวค่อยมาอ่านก็หมายความว่า… โอ้ย ไม่อยากคำนวน

ยิ่งผู้ใช้หลายคนทำเช่นนี้แล้วยิ่งเพิ่ม load เข้ามาในระบบมหาศาล

ต้องขอเน้นว่าเรื่องนี้ไม่ใช่ความผิดของผู้ใช้นะครับ แต่เป็นความผิดของผู้พัฒนาที่เห็นช้างตัวใหญ่ๆ ชื่อ Google ขี้แล้วไปขึ้ตามช้าง

เวลาเห็น Gmail หรือ Google Reader มัน update อัตโนมัติแล้วชอบใจเลยทำบ้าง ผลลัพธ์คือเครื่องแม่ข่ายแน่นิ่งไปตามระเบียบ

เรื่องนี้เขียนไว้เตือนใจให้รู้ว่า การใช้ AJAX นั้นต้องคิดให้รอบคอบ เพราะเผลอๆ จะเป็นการเพิ่ม load ให้ระบบในปริมาณมหาศาลโดยไม่ได้ตั้งใจ

และที่ยากคือ แม้เราจะแก้ที่เครื่องแม่ข่ายแล้ว แต่เราไม่สามารถไปปิด browser ของผู้ใช้ได้ ดังนั้น request ก็จะยังส่งมาหาที่เครื่องแม่ข่ายเรื่อยๆ ตราบใดที่ผู้ใช้ยังเปิด browser หน้านั้นทิ้งไว้อยู่

เป็นความพยายามสร้าง DDoS (Distributed Denial-of-Service) ให้แก่ตัวเอง ยิ่งถ้าช่วงนั้นมีใครพยายาม DDoS เราอยู่ด้วยก็ยิ่งไปกันใหญ่

สรุปว่า AJAX ต้องคิดให้ดีก่อนใช้