เว็บใช้ระบบ Caching คือ ผมต้องการตัวอย่างเว็บที่ใช้ระบบ Cach มาศึกษาหน่อยครับ
ข้อดีของ cache ทำให้ server ทำงานน้อยลง เพราะเวลา server เรียกใช้งานจะเรียกจาก cache เพียงห้วงเวลาที่เรากำหนดตั้ง cache เอาไว้ ทำให้ database server ทำงานน้อยลงด้วย ส่วนมากใช้ใน web ใหญ่ๆ คนเข้าวันละเยอะครับ
ข้อเสียเห่อๆ มีเหมือนกันบางทีเขียนไป ถูกแท้ๆ แต่ไป run บน server ผล error เหมือนเดิม โอ๊ะตกใจ
ที่แท้มันจำ cache file เดิม ต้องหาวิธี clear cache เช่น ต้องชื่อไฟล์ใหม่ให้แปลกจากเดิม
ไม่ก็ใช้วิธี ใส่ค่า random ไปต่อท้าย url เพื่อ server จะได้รู้ว่าคนละ url นะเนี่ย จะได้ประมวลผลให้ทันทีไม่ต้องไปดึงมาจาก cache ไฟล์
เท่าที่รู้นะครับ ผิดถูกขออภัยครับ
Date :
2009-10-22 19:51:38
By :
peterxp
อย่างที่คุณปีเตอร์บอกคับ
ข้อดี ช่วยลดการทำงานของ server โดยเฉพาะเว็บใหญ่ๆ ที่มีคนใช้มากๆ
ข้อเสีย สำหรับเว็บที่ต้องการข้อมูลปัจจุบัน เช่น เว็บหุ้น, เว็บบอร์ด, เว็บที่มีข้อมูลอัพเดทตลอดเวลา อาจไม่เหมาะสม
ส่วนตัวไม่เคยใช้ พอดีเฟรมเวอร์คที่กำลังศึกษา ก็มีเครื่องมือให้ใช้ได้สะดวก
Date :
2009-10-22 20:13:20
By :
pjgunner
ขอบคุณ peterXP และ เอี่ยว มากครับ
ที่ให้ข้อมูลในเบื้องต้น เว็บผมเกี่ยวกับ ลงประกาศ และอาจจะมีส่วนอื่นๆเพิ่มมาเรื่อยๆ แต่เว็บเขียนเอง ด้วยหลักการพื้นฐานของ php และตอนนี้รู้สึกเว็บ ช้าๆ เพราะผมใช้เทคอื่นๆ ไม่ค่อยเป็นและเว็บข้อมูลมากขึ้นเรื่อยๆ
ผมไม่ค่อยรู้ว่ามีวิธีไหนที่ช่วยให้เว็บทำงานได้เร็ว และไม่เคยใช้ด้วย เลยตั้งกระทู้ถามเรื่อง cache
หากใครพอมีตัวอย่าง ขอนำมาศึกษาหน่อยครับ
Date :
2009-10-22 20:40:35
By :
pun05
จะทำให้เร็วขึ้น ถ้าเขียนแบบธรรมดา แบบคุณก็
1. refactoring โค้ดของคุณให้มันทำงานได้เร็ว และลดการใช้หน่วยความจำ เพราะ เวลาตอนเขียนแรกๆ อาจมีโค้ดเกินมา ที่ไม่ได้ใช้ หรือ เรื่องลอจิก อาจอ้อมค้อมเกินไป
2. การเลือกใช้ caching ผมไม่มีตัวอย่างแต่มีหลักการ (อาจเหมือนหรือไม่เหมือนคนอื่นก็ได้นะ) คือ การตั้งเวลาสร้างแคช ถ้าตั้งไว้ 30 นาที ถ้าภายแคชเก่ามีอายุไม่ถึง 30 นาทีก็เอาแคชเก่ามาใช้ ถ้าเกิน ก็สร้างแคชใหม่ แค่นี้ครับ
อ้อ ลืมบอกไปอีกอย่าง เราสามารถเลือกที่จะแคช ในเฉพาะส่วนได้ เช่น แคชเอาเฉพาะส่วน ที่ไม่ต้องการคำนวนใหม่ แต่สำหรับส่วน ล็อคอินหรือการทำงานบางอย่างก็ไม่อาจใช้การแคชได้
และอีกอย่างการแคชควรใช้ buffer ช่วยก็จะช่วยได้ดี(เอาบัฟเฟอร์มาแคช ก่อน พวก ob_())
Date :
2009-10-22 20:50:58
By :
pjgunner
ขอบคุณมากครับ คุณ เอี่ยว
ผมพอเข้าใจหลักการที่คุณอธิบายแล้ว แต่ระบบ cache นี้มันทำงานและเขียน code แบบไหนครับ
cache กับ cookie ต่างกันไม่ ทั้ง 2 นี้ทำงานที่ฝั่ง client ใช่ไม่ครับ ถ้าจะใช้ cookie ได้ไม่ครับ พอดีที่นี้มีตัวอย่าง แต่ไม่รู้หลักการทำงานว่าทำงานได้คล้ายกันหรือเปล่า
Date :
2009-10-22 21:20:37
By :
pun05
แคชเก็บไว้ที่ server ไงครับ ไม่ใช่แคชที่ client นะนั่นมัน อยู่ที่บราวเซอร์อยู่แล้ว
อืม.. เอาแคชไปไว้ใน คุ๊กกี้ ไม่เคยคิดแฮะ อาจจะเวอร์คก็ได้นะ แต่คิดว่าไม่เวอร์คอ่ะ เพราะมันคือ ขนม
เรื่องโค้ด ขี้เกียจเขียนนะ มันก็เหนื่อยอยู่ มีตรรกกะซับซ้อนนิดหน่อย เรื่อง เขียนให้มันเข้าใจอ่ะ เดี๋ยวจะเขียนวกไปเวียนมาก จะเวียนหัวป่าวๆ
Date :
2009-10-22 21:40:26
By :
pjgunner
พี่เอี่ยวพอมีโค้ดเกี่ยวกับ cache บ้างเปล่าครับ ผมเองก็สนใจเกี่ยวกับ cache เหมือนกัน
Date :
2009-10-23 01:12:24
By :
xbeginner01
ไม่มีคับ แต่จะเขียนตัวอย่างห้พอเข้าใจการทำงาน
เช่น ข้อมูล จังหวัด นั้นไม่จำเป็นต้องคิวรี่ทุกครั้ง แต่ อำเภอ นั้นจำเป็นต้องคิวรี่ ตาม id ของจังหวัด
งั้นจะทำตัวอย่าง การเก็บข้อมูลจังหวัดไว้ในแคชคือ
ตัวอย่าง
Code (PHP)
if ($cache = MyCache::get('select_province'))
{
echo $cache;
}
else
{
//สร้าง <option> ของ รายชื่อจังหวัด
$query = mysql_query("SELECT province_id, province_name FROM province");
while ($row = mysql_fetch_array($query))
{
$provinces .= '<option value="'.$row[0].'">'.$row[1].'</option>';
}
//ข้อมูลที่จะเก็บลงแคช เอาทั้ง select เลย
$to_cache = '<select id="select_province">'.$provinces.'</select>';
//0 คือเวลา(นาที) แคชไม่มีวันหมด
echo MyCache::set('select_province', $to_cache, 0);
}
เรื่องคลาส MyCache คงไม่ยากนะครับ นี่คือตัวอย่างแค่พอทำให้เข้าใจ ภายในคลาสก็มีเรื่องของสตรีม และชื่อแคช และเวลาด้วย
จะแคชไว้ใน ฐานข้อมูล หรือ ไฟล์ก็ตามใจ
ปล. เพิ่งเปลี่ยนไสต์การเขียนโค้ดเป็นแบบ Allman สับสนๆ
Date :
2009-10-23 09:59:34
By :
pjgunner
ขอบคุณๆ เอี่ยว มากครับ
เมื่อวานไม่ได้เข้าเน็ท มาวันนี้เห็น code แล้วดีใจ เดี่ยวผมขอ copy ไปลองศึกษาดูครับ
Date :
2009-10-24 09:29:08
By :
pun05
ขอบคุณมากครับ
Date :
2009-10-24 14:50:03
By :
pun05
Load balance : Server 04