ถ้าใครพบว่าเว็บที่ทำด้วย wordpress ของตนเองนั้นโหลดช้า ? การทำ Cache นั้นเป็นสิ่งแรกที่ควรทำ แต่เนื่องจาก wordpress caching plugin มีหลายตัวจึงไม่รู้จะเลือกใช้ตัวไหนดี ลองมาดู รีวิว plug-in ต่างๆ เพื่อที่จะได้นำไปใช้ได้ตามความเหมาะสมของเว็บกันครับ
Caching คืออะไร ทุกๆครั้งที่เราเข้าไปเว็บ ทาง server จะทำกระบวณการมากมาย ตั้งแต่ excute php, php เองก็ ไปดึงข้อมูลจาก database ผลลัพท์สุดท้ายออกมาเป็น html ให้เราเห็นกัน ซึ่งขั้นตอนต่างๆ เหล่านี้บางทีเกิดขึ้น 20-200 ครั้งต่อหน้า! ซึ่งเป็นตัวการที่ทำให้เว็บช้า
การทำ cache หรือ caching ก็คือ คนแรกที่เข้ามา Server ก็ทำตามกระบวนการที่ได้กล่าวมาขั้นต้นเหมือนกันแต่เก็บผลลัพท์ไว้ ถ้าเกิดมีคนอื่นเข้ามาหน้าเดียวกันอีก Server ก็จะส่งผลลัพท์ที่เก็บไว้ให้เลย
ตัวอย่างที่นำมาทดสอบ - ใช้ Apache Benchmark ในการทำ Benchmark
- ใช้ WordPress 2.9.1 โดยติดตั้ง plugins Akismet, All in One SEO Pack และ Google XML Sitemaps
- เว็บรันอยู่ shared server ที่มี traffic ปกติเพื่อให้การทำ benchmarks ไม่โดนรบกวนและให้เหมือนกับเว็บทั่วไปที่รันอยู่บน share server เหมือนกัน
- ทดลองโดยส่ง 1000 request จาก 10 ที่พร้อมกัน ส่งไป 3 ครั้ง แต่ละครั้งคนละเวลา(อาจจะเป็น เช้า เย็น กลางคืน) แล้วนำผลเฉลี่ยของทั้ง 3 ครั้งมาคิด
- เว็บประกอบด้วย เนื้อหาโดยประมาณ, ภาพ, js และstylesheet ดังภาพข้างล่าง
ไม่มี cache เริ่มต้นจากการ ไม่ได้ทำ cache เลย เพื่อที่จะได้นำไปเปรียบเทียบกับการติดตั้ง caching plug-in ต่างๆ
จากรูปจะเห็นได้ว่าใน 1 วินาที server จัดการได้ 13.96 requests เท่านั้น
WP-Cache http://wordpress.org/extend/plugins/wp-cache/WP-Cache เป็น plug-in ที่ใช้และ install ง่าย แต่ plug-in ตัวนี้ได้ลง ไฟล์บางไฟล์ไว้นอกโฟรเดอร์ plugin ซึ่งอาจทำให้เกิด “sem-get” error ได้เวลาเรา uninstall วิธีแก้ก็คือเข้าไปที่ wp-content/wp-cache-config.php แล้วเอา comment ตรงบรรทัด $use_flock ออก
ผลออกมาถือว่าใช้ได้เลย
WP Super Cache http://wordpress.org/extend/plugins/wp-super-cache/WP Super Cache ตัวนี้คนใช้เยอะ โดยรวมถือว่าดีทั้ง install และ uninstall ง่าย ไม่ทิ้งไฟล์ไว้เวลา deactivate
ถ้าติดตั้งแล้วได้ “gzuncompress” error ก็ไม่เป็นไร เพราะไม่มีผลกระทบกับ caching operation.
plug-in ตัวนี้มี option ให้ปรับแต่งด้วยแต่มีอันหนึ่งน่าสนใจครับคือ Compression
ถ้าเปิด Compression
ตรงนี้ต้องระวังหน่อยนะครับถ้าเราเปิด Compression และ Server ของเราก็เปิดเหมือนกันหรือ Server ไม่ได้สนับสนุน Compression plug-in ตัวนี้จะให้ผลเสียทีเดียวบางครั้งการเปิด compression เป็นตัวการสำคัญเลยที่ทำให้ WP-Super cache ทำงานผิดปกติ นั่นเลยทำให้หลายคนบอกว่า WP-super cache ไม่ค่อยดี แต่จริงๆมันก็คือ WP-cache ที่ซับซ้อนกว่าเดิมที่ประสิทธิภาพไม่ต่างกันเท่าไหร่ นอกเหนือจากนั้น WP-super cache ยังไม่เป็นมิตรกับคนอื่นเท่าไหร่ถ้าปรับแต่งไม่ถูกหรือใส่ plug-in ตัวอื่นที่ไม่สามารถเข้ากันได้สามารถทำให้เว็บเราช้าลงได้เลย จึงทำให้ผมไม่กล้าใช้เท่าไหร่
WP Widget Cache http://wordpress.org/extend/plugins/wp-widget-cache/WP Widget Cache สร้างมาสำหรับเว็บที่ใช้ widget เยอะเนื่องจากเว็บที่นำมาทดสอบใช้แค่ widget มาตาฐานของ wordpress จึงไม่สามารถใช้ประโยชน์จาก WP-widget cache ได้เต็มที่
คนเขียน WP widget cache แนะนำให้ติดตั้งพร้อมกับ WP-Cache หรือ WP Super Cache เพราะฉะนั้นผมจะลองทดสอบดู 3 แบบ : Standalone, WP-widget cache+WP-Cache, WP-widget cache+WP Super Cache
WP widget cache install และ uninstall ง่าย แต่ต้องไปปรับแต่งนิดหน่อยต้องเข้าไปที่ Widget settings และกำหนดค่า expire ของแต่ละ widget
Standalone:
With WP-Cache:
With WP Super Cache:
โดยรวมแล้วจะเห็นว่าไม่ได้ช่วยอะไรมาก เพราะ WP widget cache เหมาะสำหรับเว็บที่ใช้ widget ดึงข้อมูลมาจาก database เยอะๆ
DB Cache http://wordpress.org/extend/plugins/db-cache/DB Cache plugin ทำงานแตกต่างจากหลายๆตัวที่ผ่านๆมา เพราะัตัวนี้ทำหน้า save database queries แทนการ save page การ install/uninstall ง่าย ไม่ทิ้งไฟล์ไว้เวลา deactivating ด้วย
DB Cache เหมาะใช้กับ server administrator มากกว่า เช่น web server ถ้าเว็บเรามีน้อยกว่า 500 หน้า plug-in นี้คงไม่ได้ช่วยอะไรมาก
DB Cache Reloaded http://wordpress.org/extend/plugins/db-cache-reloaded/DB Cache Reloaded ทำงานคล้ายกับ DB Cache แต่ประสิทธิภาพดีกว่า
1 Blog Cacher http://wordpress.org/extend/plugins/1-blog-cacher/1 Blog Cacher caching plugin ที่เรียบง่าย โค้ดน้อย ไม่ค่อยดังเท่าไหร่แต่เห็นบางคนแนะนำเลยมาลองทดสอบดู
โดยรวม วิธีติดตั้งยุ่งยากและผลลัพท์ที่ไม่ค่อยดี
Hyper Cache http://wordpress.org/extend/plugins/hyper-cache/Hyper Cache เป็น plug-inใหม่ แต่ประสิธิภาพดีมากติดตั้งง่ายอีกทั้งมีระบบการปรับแต่งที่ดี
เป็น Caching Plug-in ทีเร็วมากอีกทั้งโค้ดที่เบาจึงเป็น
A must have caching plugin
W3 Total Cache http://wordpress.org/extend/plugins/w3-total-cache/W3 Total Cache เป็นตัวกำเนิดของ caching plugins ทั้งหมดเพราะใหญ่มาก ศึกษาง่าย อีกทั้งมีระบบให้ปรับแต่งเกือบทุกอย่าง
การติดตั้งก็ง่าย มี option ให้ปรับแต่งตามต้องการ และเมื่อติดตั้งแล้ว plug-in จะปรับค่าตามความเหมาะสมของเว็บให้เองโดยอัตโนมัตซึ่งเหมาะสำหรับคนที่ชอบลง แล้วไม่อยากปรับแต่งอะไร
ถ้าคนที่ชอบ plug-in ที่ทำได้ทุกอย่าง ตัวนี้เป็นตัวเลือกที่ดีเพราะปรับแต่งได้ทุกอย่าง เช่น multiple methods of page caching, minifying, database caching, content delivery networks เป็นต้น แต่ก็มีข้อเสียเหมือนกันตัวนี้ไม่ได้เป็นตัวที่ caching ได้เร็วที่สุด
Do It Yourself Caching นอกจากจะใช้ plug-in ในการ cache แล้ว เราสามารถทำ caching เองก็ได้นะครับและบางครั้งมันเป็นวิธีที่ดีที่สุดโดยเฉพาะกับหน้าที่ไม่ค่อย มีการเปลี่ยนแปลงแต่ข้อเสียมันก็คือต้องทำเอง
วิธีทำ
- สร้าง folder “cache” ใน wp-content folder
- ไปหน้าที่ต้องการ cache จากนั้น view souce ให้ copy ทั้งหมดเลย
- สร้างไฟล์ที่ชื่อเหมือน หน้าที่เรา cache เช่น หน้า about ให้เราสร้างไฟล์ about.html ขึ้นมาใน folder cache แล้วนำ code เมื่อกี้มาใส่ไว้
จากนั้น สร้าง ไฟล์ .htaccess ใน root WordPress folder และนำ โค้ดข้างล่างไปใส่
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^about$ wp-content/cache/about.html
</IfModule>
mod_rewrite เป็นการบอกให้ server to ส่งเนื้อหาที่ไฟล์ wp-content/cache/about.htmlเวลามีคนเข้ามาที่
http://yourblogurl.com/about ผมแนะนำให้ศึกษา mod_rewrite ก่อนที่จะทำ caching ด้วยตัวเองเพราะนอกจากทำ caching แล้วการทำแบบนี้ยังช่วยให้ CPU load ดีขึ้นด้วย
ถึงแม้ว่า Do it yourself caching จะให้ผลที่ดีแต่ เราต้องมานั่งทำเองซึ่งเสียเวลาอีกทั้งถ้าหน้านั้นเปลี่ยนเราก็ต้องทำ cache ใหม่เองอีกจึงไม่ค่อยเหมาะสักหรับบางกรณี
ติดตั้งเป็น Combo ติดตั้งหลายๆตัวสามารถเพิ่มประสิทธิภาพได้เช่น Hyper Cache + DB Cache Reloaded และก็ทำให้แย่ลงได้เหมือนกัน เช่น WP Super Cache + Anything ลองหลายๆแบบ แล้วดูว่าแบบไหนที่ทำงานได้ดีในเว็บของเรา
สรุป ตารางเปรียบเทียบของ WP caching ต่างๆ ครับ
โดยรวมแล้วผมคิดว่า
Hyper Cache + DB Cache Reloaded เหมาะสำหรับ developer ครับเพราะมีอะไรให้เล่นอีกหน่อย
ส่วนคนที่ไม่ชอบปรับอะไรเลยหรือ blogger ทั่วไปที่ต้องการแค่เพิ่มความเร็วของเว็บหรือ developer ที่ต้องการรู้ caching อย่างจริงจัง
W3 Total Cache เป็นตัวเลือกที่เหมาะครับ
ที่มา:
tutorial9.nethttp://www.squashup.com/2010/04/what%E2%80%99s-the-best-wordpress-caching-plugin/