AJAX กับ Cache ที่กำหนดเอง

ในบางครั้งการใช้ Cache หรือไม่ใช้ Cache ของ Browser ใน AJAX ก็ให้ผลไม่ดีนักครับเช่น การใช้งาน AJAX เพื่อเรียกเนื้อหาของบอร์ด เราจำเป็นต้องยกเลิกการใช้ Cache ของ Browse ไม่เช่นนั้นหากมีการอัปเดท ฺBrowser จะไม่เห็นเนื้อหาใหม่ แต่หากมีการเรียกครั้งต่อไปไม่ว่าจะกี่ครั้ง Server ก็ยังต้องส่งข้อมูลทั้งหมดมาให้อยู่ดี เป็นการเพิ่มภาระให้กับ Server ไปซะงั้น

เมื่อ Cache หรือ No Cache ของ Browser ไม่ได้ผลเราก็ต้องมากำหนดการใช้ Cache ด้วยตัวเองเอาละกัน

หลักการก็คือ เมื่อเราร้องขอข้อมูลจาก Server ให้ส่ง flag ไปด้วย โดยผมจะกำหนดให้ flag ในที่นี้คือ เวลาปัจจุบัน (ส่งไปพร้อมกับ query อื่นๆที่จำเป็นต้องส่ง) เมื่อ Server ได้รับข้อความแล้ว Server ก็เอา flag ไปตรวจกับ flag ที่บันทึกไว้บน Server (บันทึกลง db หรือ ไฟล์ก็ได้) หาก flag ไม่ตรงกัน แสดงว่าข้อมูลที่แสดงอยู่บน Browser ไม่ใช่ข้อมูลล่าสุดหรือเพิ่งถูกเรียกมาครั้งแรก ให้ทำการอ่านข้อมูลใหม่ แล้วบันทึก flag เก็บไว้ รวมทั้งส่งข้อมูลใหม่ รวมถึง flag กลับมายัง Browser ด้วย Browser ก็จะแสดงผล พร้อมทั้ง บันทึกค่า flag ที่ได้รับเก็บไว้ เพื่อส่งกลับมาในครั้งต่อไป

ในครั้งต่อไปหากมีการร้องขอข้อมูล ก็ให้ไปอ่านเอาจาก flag ที่บันทึกไว้แล้วส่งกลับไปยัง Server ในครั้งนี้ flag ที่ส่งไป จะมีค่าตรงกันกับ บน Server ก็ให้ Server คืนค่าว่างกลับมาเพื่อบอกให้ Browser รู้ว่าข้อมูลไม่มีการเปลี่ยนแปลง ไม่ต้องอัปเดทการแสดงผล เป็นการลดภาระของ Server ในครั้งต่อๆไป

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

ตัวอย่างก็ AJAX Chat ครับ ที่ใช้เทคนิคนี้
ผู้เขียน goragod โพสต์เมื่อ 03 เม.ย. 2551 เปิดดู 9,301 ป้ายกำกับ AJAX
^