เรื่องการทำ cache ครับผมเอาไปใช้ยังงัยครับ
ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา เรื่องการทำ cache ครับผมเอาไปใช้ยังงัยครับ
เรื่องการทำ cache ครับผมเอาไปใช้ยังงัยครับ
การทำ cache ข้อมูลจากฐานข้อมูล เราจะใส่ sql query ตรงใหนครับแล้วแทรก โค๊ดการ cache ตรงใหนครับ ช่วยอธิบายให้เห็นภาพอีกนิดหน่อยครับผม ของพระคุณมากครับผม

คำแนะนำ และการใช้งาน
สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก
- ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
ความคิดเห็นที่
1
การทำ cache ข้อมูลจากฐานข้อมูล จะใส่ sql query ตรงใหน -- จากคำถาม
ทำการ cache หน้าเว็บไซต์ด้วย --- จากบทความ
การ cache หน้าเว็บไซต์ จากบทความเป็นการ เก็บข้อมูล หรือเป็นการ เก็บ html code ของทั้งหน้าเพจ
ที่ต้องการแล้วบันทึกเป็นไฟล์ไว้ที่ server ในโฟลเดอร์ที่เรากำหนด คือ เมื่อมีการเปิดหน้าเว็บเพจ
นั้นๆ ก็จะทำการบันทึก html code ที่ได้จากการประมวลผลจากฝั่ง server เก็บไว้ แล้วเมื่อมีการเรียกหน้าเพจ นั้นใหม่อีกครั้ง sever ก็จะส่งหน้าเพจที่บันทึกวไว้กลับมาแทน ที่จะทำการประมวลผลใหม่
การทำงานที่ฝั่ง server จึงลดลง
การประมวลผลในฝั่ง server หมายรวมถึง การทำงานของฟังก์ชัน คำสั่ง php, การทำงานกับฐานข้อมูล
หรือ ที่เรียกว่า sql query
จากตัวอย่างในบทความ หน้าเว็บเพจนั้น ก็จะใช้งานปกติ ทั้งการใช้คำสั่ง php หรือ sql query
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <html> <head> <title>Cache Page</title> </head> <body> <div class = "mysty1" > </div> การใช้ฟังก์ชั้น php <?php echo time(); ?> <br/> การดึงข้อมูลจาก sql query <?php $q = "select * from table where 1" ; $qr =mysql_query( $q ); while ( $rs =mysql_fetch_array( $qr )){ echo $rs [ 'data' ]; } ?> </body> </html> |
จากโค้ดด้านบนเป็น php เพจไฟล์ทั่วไป ซึ่งอาจมีทั้งคำสั่ง php หรือ sql query
โดยการใช้งาน cache จากบทความ เป็นการ แทรก code ก่อน และหลัง html tag
คือก่อนเปิด html <html>
และปิด html </html>
ดังนี้
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | <?php ////////////////////////////////////////////////////////////////////// @ include ( "cache-kit.php" ); // เรียกใช้ไฟล์ php class $cache_active = true; // กำหนดให้ทำการ cache $cache_folder = 'cache/' ; // กำหนดไฟลเดอร์ที่ไว้เก็บไฟล์ cache function callback( $buffer ) { // ฟังก์ชันสำหรับเก็บค่า html ไว้ในตัวแปร return $buffer ; } // ทำการ cache หน้าเว็บไซต์ใหม่ ไว้ในตัวแปร $page_cache ทุกๆ 10 วินาที สามารถกำหนดเป็นค่าอื่นได้ $page_cache = acmeCache::fetch( 'page_cache' , 10); if (! $page_cache ){ // ตรวจสอบว่าถ้าไม่มีข้อมูลที่ cache ไว้ ให้ทำการเก็บค่า html ไว้สำหรับบันทึก cache ob_start( "callback" ); // เริ่มต้นการบันทึก html //////////////////////////////////////////////////////////////////////// ?> <?php // ก่อนเปิด html tag ?> <html> <head> <title>Cache Page</title> </head> <body> <div class = "mysty1" > </div> การใช้ฟังก์ชั้น php <?php echo time(); ?> <br/> การดึงข้อมูลจาก sql query <?php $q = "select * from table where 1" ; $qr =mysql_query( $q ); while ( $rs =mysql_fetch_array( $qr )){ echo $rs [ 'data' ]; } ?> </body> </html> <?php // หลัง ปิด html tag ?> <?php //////////////////////////////////////////////////////////////////////// $page_cache =ob_get_contents(); // เก็บข้อมูล html ไว้ในตัวแปร $page_cache ob_end_flush(); // ตำแหน่งสิ้นสุด acmeCache::save( 'page_cache' , $page_cache ); // ทำการบันทึก html จากตัวแปร $page_cache ไว้ใน cache ชื่อ page_cache } else { echo $page_cache ; // แสดงข้อมูลที่ทำการ cache } /////////////////////////////////////////////////////////////////////////// ?> |
จากบทความส่วนใหญ่ในเว็บ อาจไม่สามารถอธิบายทุกจุดของโค้ดได้ ต้องอาศัยความรู้เบื้องต้น
ของผู้ที่จะนำไปใช้ ประกอบ หรือ สอบถามเพิ่มเติมในบอร์ดได้
มีวิธีการ cache หน้าเพจอีกวิธีหนึ่ง ซึ่งประโยชน์ก็จะต่างจากวิธีในบทความข้างต้น แต่การใช้งานจะเข้าใจง่าย โดยการใช้ ฟังก์ชัน header ของ php โดยแทรก code ไว้ก่อนแท็กเปิด html
โดยการ cache วิธีนี้บราวเซอร์จะทำ ทำการ cache หน้าเพจไว้ที่เครื่องของผู้ใช้
การรีโหลดเพจ หรือการกด F5 จะเป็นการสั่งให้ บราวเซอร์ทำการ cache ใหม่
การคลิกลิ้งในหน้าเว็บโดยทั่วไปบราวเซอร์จะนำข้อมูลที่ cache มาแสดง ทำให้ไม่ต้องคำร้องขอไปที่ sever (http request) การแสดงผลข้อมูลจึงเร็วขึ้น
ตัวอย่าง code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <?php header( "Cache-Control: must-revalidate" ); $offsetDate = 60 * 60 * 24 * 3; // กำหนดให้ทำการ cache ใหม่ทุกๆ 3 วัน //$offsetDate = 30; // หรือกำหนดเป็นวินาที เฃ่น cache ทุกๆ 30 วินาที $ExpStr = "Expires: " . gmdate ( "D, d M Y H:i:s" , time() + $offsetDate ) . " GMT" ; header( $ExpStr ); ?> <html> <head> <title>Cache Page</title> </head> <body> <div class = "mysty1" > </div> การใช้ฟังก์ชั้น php <?php echo time(); ?> <br/> การดึงข้อมูลจาก sql query <?php $q = "select * from table where 1" ; $qr =mysql_query( $q ); while ( $rs =mysql_fetch_array( $qr )){ echo $rs [ 'data' ]; } ?> </body> </html> |

ขอบคุณทุกการสนับสนุน
![]()