0196 | มาทำ cache file อย่างง่ายกัน

สมัยนี้ เว็บไซต์ส่วนใหญ่จะเป็น dynamic กันทั้งนั้น ทำให้ server ต้องรับภาระ ในการประมวลผลมากกว่าเว็บไซต์ที่เป็น static ซึ่งการทำงานของเว็บแบบ dynamic และ static เป็นยังไง ลองค้นใน google กันเองแล้วกันครับ การทำ cache file นี้ เหมาะสำหรับหน้าเว็บที่ไม่ได้มีการเปลี่ยนแปลงอยู่ตลอดเวลา และมีการเรียกซ้ำๆบ่อยครั้ง เราจึงมาทำให้หน้าๆ นั้นเป็น static ซะเลย เพื่อลดภาระการทำงานของ server มาดูวิธีกันเลยครับ

เอา code ด้านล่างนี้ไปไว้ในส่วนหัวของไฟล์

ob_start();
$cachefile = "cache/test.html";
if (file_exists($cachefile)) {
	echo file_get_contents($cachefile);
	exit();
}


แล้วนำส่วนนี้ไปวางไว้ในส่วนท้ายสุดของไฟล์ครับ

$fp = fopen($cachefile, 'w');
fwrite($fp, ob_get_contents());
fclose($fp);
ob_end_flush();

อธิบายคร่าวๆคือ การเรียกครั้งแรก จะตรวจสอบก่อนว่า มีไฟล์ test.html อยู่ใน folder ชื่อ cache หรือไม่ ถ้ามี ก็ให้ include ออกมาแสดงเลย แต่ถ้าไม่มีก็ให้ทำงานตามปกติ ต่อไป แล้วทำการเขียนไฟล์ test.html ลงไป เมื่อมีคนอื่นมาเรียกหน้านี้ซ้ำอีก ก็จะไปเรียกไฟล์ test.html มาแสดงได้เลย ไม่จำเป็นต้องประมวลผลใหม่
เวลาเอาไปใช้งานจริง ตรงชื่อไฟล์ อาจจะเอา url หรือค่าอะไรสักอย่าง ที่แต่ละหน้าไม่เหมือนกัน หรือเป็น id ในแต่ละหน้านั้น มาแปลงเป็น md5 ก่อนก็ได้แล้ว ชื่อไฟล์จะได้ไม่ซ้ำกัน
เช่น url เป็น www.domain.com/test.php?id=1&page=2

$cachefile = "cache/".md5($_SERVER['REQUEST_URI']).".html";

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

ที่มา : http://www.theukwebdesigncompany.com/articles/php-caching.php

Leave a Reply

Your email address will not be published. Required fields are marked *