ตั้งค่า Nginx FastCGI Cache สำหรับ WordPress บน Cloud VPS

ทำไมต้องตั้งค่า Nginx FastCGI Cache?

Nginx FastCGI Cache เป็นวิธีการเก็บผลลัพธ์หน้า WordPress ที่คำนวณเสร็จแล้วไว้ในหน่วยความจำ ทำให้เมื่อผู้ใช้เข้ามาอีกครั้ง เว็บไซต์สามารถให้บริการหน้านั้นได้โดยไม่ต้องประมวลผล PHP ใหม่ ผลลัพธ์คือ เว็บโหลดเร็วขึ้นอย่างมาก โดยเฉพาะเมื่อมี Traffic สูง

ความแตกต่าง Nginx FastCGI Cache กับ Caching วิธีอื่น

Nginx FastCGI Cache ต่างจาก WordPress Caching Plugin เพราะมันทำงานที่ระดับ HTTP ก่อนที่ PHP จะประมวลผล ซึ่งเร็วกว่าการใช้ Plugin เพราะ Plugin ต้องให้ PHP วิ่นวิ่น (Boot) ก่อน นอกจากนี้ FastCGI Cache ยังคล่องตัวมากขึ้นในการล้าง Cache เมื่อมีการอัปเดตบทความ เพราะหลายคน Caching Plugin ไม่ลบ Cache ได้ทันที

ข้อดีของ Nginx FastCGI Cache สำหรับ WordPress

  • ความเร็วสูงมาก — เก็บหน้า HTML ที่สมบูรณ์แล้ว ไม่ต้องให้ PHP ประมวลผล ทำให้เว็บเร็วขึ้น 3-10 เท่า สำหรับหน้า Static หรือ Semi-Dynamic
  • ลด Load บน Server — ลดการใช้ CPU และ Memory โดยไม่ต้องเรียก PHP-FPM ทุกครั้ง ทำให้เซิร์ฟเวอร์สามารถจัดการ Concurrent Users ได้มากขึ้น
  • ล้าง Cache ได้ง่าย — เมื่อใช้ร่วมกับ Plugin หรือ Nginx Helper ก็สามารถล้าง Cache อัตโนมัติเมื่อมีการ Update บทความ
  • ประหยัด Server Resources — เหมาะสำหรับ Cloud VPS ที่ต้องการประหยัด CPU และ RAM เพราะ Nginx FastCGI Cache ใช้พื้นที่น้อย
  • เข้ากันได้ทุก Theme และ Plugin — ไม่ต้องเปลี่ยน Code เพราะทำงานที่ระดับ Server

วิธีตั้งค่า Nginx FastCGI Cache บน Cloud VPS

หากใช้ Cloud VPS ของ de.co.th ด้วย Nginx คุณสามารถตั้งค่า FastCGI Cache ได้ดังนี้:

1. ตั้งค่า Cache Path ใน nginx.conf

เข้า SSH และแก้ไขไฟล์ /etc/nginx/nginx.conf เพื่อเพิ่ม Cache Path:

fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=wordpress:100m inactive=60m use_temp_path=off;

2. ตั้งค่า FastCGI Cache ในไฟล์ Server Block

แก้ไขไฟล์ Virtual Host ของเว็บไซต์ WordPress ของคุณ โดยเพิ่ม:

fastcgi_cache wordpress;
fastcgi_cache_valid 200 60m;
fastcgi_cache_valid 404 10m;
fastcgi_cache_methods GET HEAD;
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;

3. กำหนดเงื่อนไข Skip Cache

ปกติเราไม่ต้องการให้ Cache ถูกเก็บเมื่อผู้ใช้เข้า wp-admin หรือเข้าสิ่งใด ๆ ที่ต้องการข้อมูลใหม่:

set $skip_cache 0;
if ($request_method = POST) { set $skip_cache 1; }
if ($query_string != "") { set $skip_cache 1; }
if ($request_uri ~* "/wp-admin/|/wp-login.php|/wp-cron.php") { set $skip_cache 1; }
if ($http_cookie ~* "wordpress_logged_in") { set $skip_cache 1; }

4. Reload Nginx

หลังจากแก้ไข ให้ Reload Nginx:

sudo nginx -t
sudo systemctl reload nginx

ล้าง Cache FastCGI อัตโนมัติเมื่อ Update

หากต้องการให้ Cache ล้างอัตโนมัติเมื่อมีการ Update บทความ ให้ติดตั้ง Plugin “Nginx Helper” และเปิดใช้งาน

เทียบเคียงกับวิธี Caching อื่น

วิธี Caching ความเร็ว ความง่ายตั้งค่า ความนิยม
Nginx FastCGI Cache เร็วมากที่สุด ปานกลาง ดีสำหรับ Production
WP Super Cache เร็ว ง่าย นิยม
Redis Object Cache เร็วมาก ยาก ดีสำหรับเว็บค้า

สรุป

Nginx FastCGI Cache เป็นวิธีการ Cache ที่ทรงพลังสำหรับ WordPress บน Cloud VPS โดยให้ความเร็วสูงสุด และลดภาระ Server ได้อย่างมีนัยสำคัญ เหมาะสำหรับเว็บไซต์ที่มี Traffic สูง หรือต้องการประหยัด Server Resources สำหรับ Cloud VPS ของ de.co.th ลองใช้วิธีนี้เพื่อให้เว็บไซต์ WordPress ของคุณเร็วขึ้น