TIP Today : 04 การปรับแต่งระบบ Cache ของ AAS V2.3
คำเตือน : ไม่เหมาะกับมือใหม่ และไม่รู้ว่ากำลังแก้ปัญหาอะไร ทำอะไร แต่ถ้าอยากเก่ง Level+ ก็เชิญได้ทุกท่านวันนี้ จะมานำเสนอ การปรับแต่งไฟล์ที่ชื่อว่า cachestart.php ที่อยู่ในโฟลเดอร์ /system ของทุกท่าน
ซึ่งไฟล์ที่ทุกท่านได้ไป จะถูกเข้ารหัส
ทั้งนี้ก็เพื่อความปลอดภัย กันคนมือซนไปปรับจนมันเจ๊ง ไม่ได้หวงครับ แต่ห่วงเฉย ๆ
ก่อนอื่นผมขออธิบาย ว่าระบบ Cache ที่ผมใช้นั้น ทำงานยังไงก่อนนะครับระบบ Cache ที่ AAS V2.3 ใช้นั้น คือโมดูลเสริมของ PHP ที่เรียกว่า Cache Lite ซึ่งเป็นเวอร์ชั่น 1.7.8 ที่เป็นตัวล่าสุด
สามารถหาอ่านข้อมูลเบื้องลึกของระบบ cache ที่ว่านี้ได้ ที่นี่ครับ
http://pear.php.net/package/Cache_Lite/ทีนี้มาดูกันต่อครับ
ระบบ cache นี้ผมได้ตั้งค่าเบื้องต้นที่เป็นค่าปลอดภัยให้กับทุกท่านแล้ว แต่อาจจะมีบางท่านที่มีการใช้งานแบบหนักหน่วง
ระบบ cache เลยรองรับได้ไม่เต็มเม็ดเต็มหน่วย
โดยค่ามาตราฐานที่ผมตั้งให้กับทุกท่านคือ
1.เก็บข้อมูล cache ไว้ 2 ชม.
2.สุ่มลบ cache ที่เก่าเกิน 2 ชม. ทุก ๆ การเรียกใช้ระบบ 200 ครั้ง (หมายถึง เวลาเรียกใช้ cache มันจะสุ่มเคลียร์ cahce เก่า 1 ครั้ง ใน 200 ครั้ง)
3.เก็บไฟล์ cache ในโฟลเดอร์ /tmp
4.ระบบจัดการไฟล์ cahce แบบ Single Level (หมายถึง เก็บไฟล์ cahce ลงในโฟลเดอร์ ชั้นเดียว ซึ่งจะทำให้การเรียกใช้ไฟล์เร็วที่สุด)
และนี่ คือ ไฟล์ cachestart.php ที่ไม่ได้เข้ารหัส ท่านที่สนใจสามารถ Download ไปใช้งานปรับแต่งกันได้เลยครับ
เนื้อหาของไฟล์มีสั้น ๆ ดังนี้<?php
/**********************************
* PHP CACHE LITE : 1.7.8 *
**********************************/
$cacheoptions = array(
'cacheDir' => './tmp/',
'caching' => true,
'lifeTime' => 7200,
'automaticCleaningFactor' => 200,
'automaticSerialization' => true,
'hashedDirectoryLevel' => 0,
);
$cache_function = new Cache_Lite_Function($cacheoptions);
$cache_data = new Cache_Lite($cacheoptions);
?>
อธิบายละเอียด'cacheDir' => './tmp/',อันนี้คือบอกว่าเราจะเก็บไฟล์ cache ไว้ที่โฟลเดอร์ /tmp ครับ เราสามารถเปลี่ยน tmp เป็นคำอื่น ๆได้ครับ ตามสะดวก
'caching' => true,นี่คือตัวที่เอาไว้ ปิด-เปิด ระบบ cache ถ้าท่านต้องการปิด ไม่ใช้มันก็เปลี่ยน true เป็น false ได้ครับผม
'lifeTime' => 7200,นี่คือค่าที่ระบุอายุของไฟล์ cahce มีหน่วยเป็นวินาที ในที่นี่ 7200 วินาที = 2 ชม.
ถ้าต้องการ cache ไฟล์นานขึ้น ให้เพิ่มค่านี้ได้ครับ
3600 = 1 ชม.
7200 = 2 ชม.
10800 = 3 ชม.
14400 = 4 ชม.
ไปเรื่อยล่ะครับ
คำเตือน....!!!! การเพิ่มอายุของไฟล์ cache จะทำให้ ไฟล์ที่แคชไว้ เพิ่มมากขึ้น ท่านอาจโดนโฮสท์เตะได้ โปรดรับทราบความเสี่ยงกันเอาเองนะครับ'automaticCleaningFactor' => 200,อันนี้คือค่าสุ่มให้ลบ cache ที่หมดอายุ ค่าที่ผมตั้งไว้คือ 200 หมายความว่า มีโอกาส 1 ใน 200 ครั้งที่ cache หมดอายุจะถูกลบโดยอัตโนมัติ
เป็นค่าที่เหมาะสมครับ แต่ลองเพิ่มได้ ลดได้ แต่เราก็ไม่ค่อยเห็นความต่างหรอกครับ มันทำงานเบื้องหลัง สำหรับเว็บที่มีคนเข้าเยอะ ๆ
โหลดหนัก ๆ ลองตั้งไว้ 400 ก็น่าพอใจครับ
'automaticSerialization' => true,อันนี้เป็นเรื่องของเทคนิค ขอผ่านไม่อธิบายครับ
'hashedDirectoryLevel' => 0,อันนี้คือ ตัวที่กำหนดว่าในโฟลเดอร์ ที่เก็บไฟล์ cache ของเรา จะให้มี โฟลเดอร์ซ้อน ๆ ลงไปกี่ชั้น
ค่า 0 คือ ไม่มี เหมาะกับเว็บที่คนเข้าออกไม่มาก เก็บไฟล์ไว้ชั้นเดียว เรียกใช้งานเร็วที่สุด ไฟล์ cache หลัก 4-5000 ไฟล์ ก็โอเคอยู่
ค่า 1 คือ จะมี โฟลเดอร์ย่อยซ้อนลงไป 1 ชั้น การเรียกใช้งานช้าลงเล็กน้อย แลกกับความเสถียรที่เพิ่มขึ้น กรณีคนเข้าเยอะขึ้น
ค่า 2 คือ จะมี โฟลเดอร์ย่อยซ้อนลงไป 2 ชั้น เริ่มซับซ้อน และช้าลงอีกนิด แต่เสถียรมาก เหมาะกัวเว็บที่มีไฟล์ cache หลัก หลายหมื่นไฟล์
ค่า 3 คือ จะมี โฟลเดอร์ย่อยซ้อนลงไป 3 ชั้น ซับซ้อนมาก ช้าลงอีก เหมาะกับเว็บ ที่เก็บ cache มากกว่า 24 ชม. และ Traffic สูงมาก ๆ
ค่า 4++ ถ้าไม่ใช่โฮสท์แรงจริง ๆ อย่าลอง สำหรับเทพเทวดาเท่านั้น
ปล.ของผมใช้แค่ 2 ก็หรูสุด ๆ แล้ว
เมื่อตั้งค่าไฟล์ cachestart.php ใหม่ ให้ลบไฟล์ cache เก่าก่อนทุกครั้ง และ อย่าลบผ่าน FTP ให้ลบผ่าน cpanel เลยมันจะเร็วกว่า
โดยลบโฟลเดอร์ทิ้งเลยแล้วสร้างใหม่ คิดดู ถ้าท่านมีไฟล์ cache อยู 8 พันไฟล์ ใช้ FTP มันจะลบทีล่ะไฟล์ รอกันนานเลยครับ
คำเตือนอีก : อ่านให้เข้าใจก่อนลงมือปฏิบัติ และรับความเสี่ยงเอาเองนะครับ