ทำไม WordPress บน Shared Hosting ถึงช้า
WordPress เป็น CMS ที่ทรงพลังแต่หากตั้งค่าไม่ดีจะทำให้เว็บโหลดช้ามาก โดยเฉพาะบน Shared Hosting ที่ทรัพยากรถูกแบ่งปันกับผู้ใช้รายอื่น สาเหตุหลักที่ทำให้ WordPress ช้า ได้แก่
- ไม่มีระบบ caching — PHP ต้องประมวลผลทุก request ใหม่ตั้งแต่ต้น
- รูปภาพขนาดใหญ่ที่ไม่ได้ compress หรือ resize
- Plugin มากเกินไปหรือ plugin คุณภาพต่ำ
- ฐานข้อมูลที่มี overhead สะสมจากหลายปี
- ไม่ได้เปิดใช้ GZip compression
- ใช้ PHP เวอร์ชันเก่า (ต่ำกว่า 8.1)
- ไม่ได้ใช้ CDN ในการกระจายไฟล์ static
ขั้นตอนที่ 1 — เลือก Caching Plugin ให้เหมาะสม
Caching plugin คือตัวช่วยที่สำคัญที่สุดในการเร่งความเร็ว WordPress โดยระบบจะบันทึกหน้า HTML ที่ประมวลผลแล้วไว้เป็น static file ทำให้ request ถัดมาไม่ต้องรัน PHP ใหม่ทั้งหมด
W3 Total Cache (ฟรี)
W3TC เป็น plugin ยอดนิยมที่รองรับ page cache, object cache, database cache และ browser cache ในตัวเดียว ติดตั้งฟรีจาก WordPress Plugin Directory และปรับแต่งได้ละเอียด เหมาะสำหรับผู้ที่ต้องการควบคุมทุกระดับ
LiteSpeed Cache (ฟรี รองรับ LiteSpeed Server)
หาก Hosting ของคุณใช้ LiteSpeed Web Server (พบบ่อยใน cPanel Hosting ยุคใหม่) ให้ใช้ LiteSpeed Cache เพราะทำงานร่วมกับ server โดยตรง ได้ผลลัพธ์ดีกว่า plugin ทั่วไปมาก ฟีเจอร์ครอบคลุมตั้งแต่ page cache, image optimization, CSS/JS minify และ lazy load
WP Rocket (จ่ายเงิน)
WP Rocket เป็น premium caching plugin ที่ตั้งค่าง่ายที่สุด เหมาะสำหรับมือใหม่ที่ไม่อยากเสียเวลาปรับแต่งละเอียด แค่ติดตั้งและเปิดใช้งานก็ได้ประสิทธิภาพที่ดีแล้ว
ขั้นตอนที่ 2 — เปิด GZip Compression ใน .htaccess
GZip compression ทำให้ไฟล์ HTML, CSS, JavaScript ที่ส่งจาก server ไปยัง browser มีขนาดเล็กลงได้ถึง 70% เพิ่มบรรทัดต่อไปนี้ใน .htaccess ที่ root ของ WordPress
# Enable GZip Compression
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml
AddOutputFilterByType DEFLATE text/css text/javascript
AddOutputFilterByType DEFLATE application/javascript application/x-javascript
AddOutputFilterByType DEFLATE application/json application/xml
AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>
# Browser Caching
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/webp "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
</IfModule>
ขั้นตอนที่ 3 — อัปเกรด PHP เป็นเวอร์ชันล่าสุด
PHP 8.2 เร็วกว่า PHP 7.4 ประมาณ 20–30% และเร็วกว่า PHP 5.6 เกือบ 3 เท่า สามารถเปลี่ยน PHP version ได้ใน cPanel > Software > Select PHP Version เลือกเวอร์ชัน 8.2 หรือ 8.3
ขั้นตอนที่ 4 — ใช้ CDN กระจายไฟล์ Static
CDN (Content Delivery Network) ช่วยให้ไฟล์รูปภาพ, CSS, JavaScript ถูกส่งจาก server ที่ใกล้กับผู้เข้าชมมากที่สุด ลด latency และ server load ได้อย่างมาก สำหรับ WordPress บน Shared Hosting แนะนำ
- Cloudflare (ฟรี) — เปลี่ยน Nameserver แล้วเปิด proxy ได้ทันที ไม่ต้องเปลี่ยน hosting
- BunnyCDN — ราคาถูก เหมาะสำหรับเว็บที่มีรูปภาพมาก ใช้ร่วมกับ CDN Enabler plugin
- Jetpack Site Accelerator — ฟรี ใช้ CDN ของ WordPress.com สำหรับรูปภาพและไฟล์ static
ขั้นตอนที่ 5 — Optimize รูปภาพ
รูปภาพที่ไม่ได้ optimize มักเป็นสาเหตุหลักที่ทำให้หน้าเว็บโหลดช้า แนะนำให้ใช้ plugin ดังนี้
- Smush — compress รูปภาพอัตโนมัติเมื่ออัปโหลด มี lazy load ในตัว
- ShortPixel — รองรับ WebP conversion คุณภาพดี มีแผนฟรี
- Imagify — ทำงานร่วมกับ WP Rocket ได้ดี
นอกจาก plugin ยังควรอัปโหลดรูปที่มีขนาดเหมาะสมตั้งแต่แรก รูปที่แสดงบนเว็บ 800px ไม่ควรอัปโหลดรูป 4000px ขึ้นไป
ขั้นตอนที่ 6 — Minify CSS และ JavaScript
Minify คือการลบ whitespace, comment และย่อ variable name ใน CSS/JS เพื่อลดขนาดไฟล์ caching plugin ส่วนใหญ่มีฟีเจอร์นี้ในตัว หรือใช้ Autoptimize plugin ได้ฟรี
ตรวจสอบความเร็วเว็บด้วย Command Line
# วัดเวลาโหลดด้วย curl
curl -o /dev/null -w "DNS: %{time_namelookup}s | Connect: %{time_connect}s | TTFB: %{time_starttransfer}s | Total: %{time_total}s\n" -s https://yoursite.com
# ตรวจสอบว่า GZip ทำงานหรือไม่
curl -I -H "Accept-Encoding: gzip" https://yoursite.com | grep -i content-encoding
# ดู response header ทั้งหมด
curl -I https://yoursite.com
# ทดสอบ cache header
curl -I https://yoursite.com/wp-content/themes/your-theme/style.css | grep -i cache
แก้ปัญหาที่พบบ่อย
หลังเปิด Cache แล้วเว็บแสดงข้อมูลเก่า
ให้ Clear Cache จาก plugin dashboard ทุกครั้งที่แก้ไขเนื้อหา หรือตั้งค่า cache expiry ให้สั้นลง W3TC และ WP Rocket มีปุ่ม "Purge All Caches" บน admin bar
GZip ไม่ทำงานทั้งที่ใส่ .htaccess แล้ว
บาง hosting ปิด mod_deflate ไว้ ให้ตรวจสอบด้วย curl -I -H "Accept-Encoding: gzip" URL หาก content-encoding: gzip ไม่ปรากฏ ให้ติดต่อ hosting support เพื่อเปิด module
CSS/JS หายหลัง Minify
Plugin บางตัว minify แล้วทำให้ JavaScript error เกิดขึ้น ให้ไปที่ Autoptimize > Exclusions แล้วเพิ่ม script ที่มีปัญหาเข้า exclude list
ความเร็วดีบน Desktop แต่ Mobile ยังช้า
เปิด Lazy Load สำหรับรูปภาพ และเปิด Defer JavaScript ใน caching plugin จะช่วยให้ Mobile score ดีขึ้นมาก เพราะหน้าจอมือถือโหลด resource น้อยกว่า
Cloudflare Cache ทำให้ Admin ผิดปกติ
ตั้งค่า Page Rule ใน Cloudflare ให้ bypass cache สำหรับ URL ที่มี /wp-admin/* และ /wp-login.php เพื่อให้ admin ทำงานปกติ
คำถามที่พบบ่อย
ควรใช้ caching plugin กี่ตัว
ใช้ได้แค่ตัวเดียวเท่านั้น การใช้หลายตัวพร้อมกันทำให้เกิด conflict และอาจทำให้เว็บเสียหาย เลือกตัวที่เหมาะกับ hosting ของคุณแล้วใช้ตัวเดียวให้ครบฟีเจอร์
Shared Hosting เร่งความเร็วได้มากแค่ไหน
ด้วยการ optimize ที่ถูกต้อง WordPress บน Shared Hosting สามารถโหลดได้ภายใน 1–2 วินาทีได้ ถ้าต้องการเร็วกว่านั้นอย่างมีนัยสำคัญ อาจต้องพิจารณาอัปเกรดเป็น VPS หรือ Cloud Hosting
PageSpeed Insights กับ GTmetrix ใช้ตัวไหนดีกว่า
ใช้ทั้งคู่ครับ PageSpeed Insights ใช้ข้อมูล Core Web Vitals จริงจาก Chrome users ส่วน GTmetrix ให้รายละเอียด waterfall chart ที่ช่วยวิเคราะห์ได้ลึกกว่า ทั้งคู่ฟรีและเสริมกัน