ตัวอย่างการทำ Cache HomeForumตัวอย่างการทำ Cache Wanchana yoojuy ตัวอย่างการทำ Cache อยากทราบวิธีการทำครับ ไม่่ทราบว่าวิธีไหน สะดวกแล้วก็มีข้อเสียในการทำงานน้อยครับ ขอบคุณครับ กรกฎ วิริยะ จริงๆแล้วมันก็มีหลายวิธีนะครับ เช่นการใช้ ฟังก์ชั่นของ PHP หรือการใช้ libraly เสริม หรือการ cache ด้วยตัวเอง วิธีที่ผมนิยม (ส่วนตัว) คือการจัดการ cache ด้วยตัวเองครับ ข้อดีที่สำคัญคือ ง่าย และ ควบคุมได้ สิ่งที่ต้องคำนึงถึง เมื่อต้องการ cache คือ 1.ข้อมูลมีการเปลี่ยนแปลงบ่อยหรือเปล่า หรือ เราควบคุมการเปลี่ยนแปลงนั้นได้หรือเปล่า ข้อมูลที่ต้องทันสมัยเสมอ เช่นการดูข้อมูลแบบ real time คงไม่เหมาะที่จะ cache ข้อมูลแคช ที่ไม่แน่นอน หรืไม่สามารถคาดเาล่วงหน้าได้ ก็คงไม่สามารถจัดการ cache ให้ทันสมัยได้ 2.เรามักใช้ cache เพื่อเลี่ยงการ query ข้อมูลจากฐานข้อมูล ซึ่งช้ากว่า และ เปลืองทรัพยากร มากกว่า ถ้าไม่ใช่ เราก็คงไม่มีความจำเป็นต้องแคชครับ แนวคิดการแคช ก็คือ เมื่อเรา query ข้อมูลออกมาตามปกติ ก่อนจะส่งข้อมูลออกไปแสดงผล ก็ให้บันทึกข้อมูลนั้น ลงเป็น text file เก็บไว้ เมื่อเราก็ตามที่เราต้องการเรียยกข้อมูลเดิมอีกครั้ง ก็ให้ทำการตรวจสอบก่อน ว่า เรามี cache บันทึกไว้หรือไม่ ถ้ามี ก็ไปโหลดเอาจาก text file ที่เก็บไว้ ไปแสดงผลทันที โดยไม่ต้อง query จุดที่ยาก ก็คือการตรวจสอบความทันสมัยละครับ ซึ่งเราจะต้องพิจารณาเอาเองว่า เมื่อไร ที่ควรมีการอัปเดท เนื้อหา ซึ่งทำได้ง่ายๆ คือ เมื่อไรที่ต้องการอัปเดท ก็ให้ลบไฟล์ที่ยันทึกออกเท่านั้น ยกตัวอย่าง GCMS มีการ cache ไฟล์ สำหรับส่วนแสดงผลบทความใหม่ และ กระทู้ใหม่ ในหน้าแรก ซึ่ง การสร้างแคช จะทำเมื่อมีการ เขียนบทความ หรือ ตั้งคำถามใหม่เท่านั้น ความคิดเห็น รายละเอียด ไฟล์อัปโหลด ชนิด jpg, jpeg ขนาดไฟล์ไม่เกิน 2M ส่งความคิดเห็น
วิธีที่ผมนิยม (ส่วนตัว) คือการจัดการ cache ด้วยตัวเองครับ ข้อดีที่สำคัญคือ ง่าย และ ควบคุมได้
สิ่งที่ต้องคำนึงถึง เมื่อต้องการ cache คือ
1.ข้อมูลมีการเปลี่ยนแปลงบ่อยหรือเปล่า หรือ เราควบคุมการเปลี่ยนแปลงนั้นได้หรือเปล่า ข้อมูลที่ต้องทันสมัยเสมอ เช่นการดูข้อมูลแบบ real time คงไม่เหมาะที่จะ cache ข้อมูลแคช ที่ไม่แน่นอน หรืไม่สามารถคาดเาล่วงหน้าได้ ก็คงไม่สามารถจัดการ cache ให้ทันสมัยได้
2.เรามักใช้ cache เพื่อเลี่ยงการ query ข้อมูลจากฐานข้อมูล ซึ่งช้ากว่า และ เปลืองทรัพยากร มากกว่า ถ้าไม่ใช่ เราก็คงไม่มีความจำเป็นต้องแคชครับ
แนวคิดการแคช ก็คือ เมื่อเรา query ข้อมูลออกมาตามปกติ ก่อนจะส่งข้อมูลออกไปแสดงผล ก็ให้บันทึกข้อมูลนั้น ลงเป็น text file เก็บไว้ เมื่อเราก็ตามที่เราต้องการเรียยกข้อมูลเดิมอีกครั้ง ก็ให้ทำการตรวจสอบก่อน ว่า เรามี cache บันทึกไว้หรือไม่ ถ้ามี ก็ไปโหลดเอาจาก text file ที่เก็บไว้ ไปแสดงผลทันที โดยไม่ต้อง query
จุดที่ยาก ก็คือการตรวจสอบความทันสมัยละครับ ซึ่งเราจะต้องพิจารณาเอาเองว่า เมื่อไร ที่ควรมีการอัปเดท เนื้อหา ซึ่งทำได้ง่ายๆ คือ เมื่อไรที่ต้องการอัปเดท ก็ให้ลบไฟล์ที่ยันทึกออกเท่านั้น
ยกตัวอย่าง GCMS มีการ cache ไฟล์ สำหรับส่วนแสดงผลบทความใหม่ และ กระทู้ใหม่ ในหน้าแรก ซึ่ง การสร้างแคช จะทำเมื่อมีการ เขียนบทความ หรือ ตั้งคำถามใหม่เท่านั้น