เมื่ออัปเดตเนื้อหาเว็บไซต์แล้วมีผู้เยี่ยมชมยังเห็นเนื้อหาเก่า นั่นอาจเป็นเพราะ Cloudflare ยังส่ง Cache เก่าอยู่ การ Purge Cache เป็นวิธีสั่งให้ Cloudflare ลบ Cache เก่าออกและดึงไฟล์ใหม่จาก Origin Server โดยทันที บทความนี้จะอธิบายว่าเมื่อไหรควร Purge Cache และวิธีทำให้ถูกต้อง
Cache คืออะไร? ทำไมต้อง Purge?
Cloudflare Cache เป็นการเก็บไฟล์เว็บ (HTML, CSS, JavaScript, รูปภาพ) ไว้บน Edge Server ของ Cloudflare ทั่วโลก ทำให้ผู้เยี่ยมชมได้ไฟล์เร็วขึ้น แต่เมื่ออัปเดตเนื้อหา Cache เก่ายังอยู่บน Server ของ Cloudflare และแสดงให้ผู้เยี่ยมชมเห็นเนื้อหาเก่า Purge Cache คือการลบ Cache นั้นออก เพื่อให้ Cloudflare ดึงไฟล์ล่าสุดจาก Origin Server
วิธี Purge Cache ผ่าน Cloudflare Dashboard
- เข้าสู่ Cloudflare Dashboard → เลือกโดเมน
- ไปที่เมนู Caching → เลือก Configuration
- คลิก Purge Cache
- เลือกวิธีการ Purge:
- Purge Everything: ลบ Cache ทั้งหมด (ใช้เมื่ออัปเดตใหญ่)
- Custom Purge: เลือกลบเฉพาะ URL, ไฟล์, หรือ Tag (ใช้เมื่ออัปเดตเล็กน้อย)
วิธี Purge Cache ผ่าน API
สำหรับการอัปเดต Deployment Pipeline หรือสคริปต์อัตโนมัติ สามารถใช้ Cloudflare API เพื่อ Purge Cache:
# ก่อนอื่น ได้ API Token จาก Cloudflare Dashboard
# Account Settings → API Tokens → Create Token
# Purge Everything (ลบ Cache ทั้งหมด)
curl -X POST "https://api.cloudflare.com/client/v4/zones/{zone_id}/purge_cache" \
-H "Authorization: Bearer {api_token}" \
-H "Content-Type: application/json" \
--data '{"purge_everything":true}'
# Purge เฉพาะ URL
curl -X POST "https://api.cloudflare.com/client/v4/zones/{zone_id}/purge_cache" \
-H "Authorization: Bearer {api_token}" \
-H "Content-Type: application/json" \
--data '{
"files": [
"https://yourdomain.com/style.css",
"https://yourdomain.com/script.js",
"https://yourdomain.com/index.html"
]
}'
# Purge โดย Cache Tag
curl -X POST "https://api.cloudflare.com/client/v4/zones/{zone_id}/purge_cache" \
-H "Authorization: Bearer {api_token}" \
-H "Content-Type: application/json" \
--data '{
"tags": ["blog", "homepage"]
}'
เมื่อไหรควร Purge Cache?
การ Purge Cache ที่เหมาะสมจะช่วยให้เว็บไซต์อัปเดตได้รวดเร็ว และไม่กระทบประสิทธิภาพ:
1. Purge Everything
- อัปเดตเนื้อหาหลัก (Homepage, Landing Page)
- เปลี่ยน Design หลัก (CSS, Layout)
- อัปเดต Global Navigation Menu
- Deploy Version ใหม่ของเว็บ
- แก้ไข Bug สำคัญที่ทั้งเว็บ
2. Custom Purge (Purge เฉพาะ URL)
- อัปเดตรูปภาพเดียว (Purge เฉพาะ /images/photo.jpg)
- อัปเดต CSS/JS ไฟล์หนึ่ง (Purge /style.css)
- อัปเดตหน้า Blog เพียง 1 หน้า
- แก้ไข API Response URL เดียว
3. Purge โดย Cache Tag
- อัปเดตทั้งหมดใน Category “Blog”
- อัปเดตทั้งหมดใน Tag “Product”
- Purge ทั้งหมด Page ที่เป็น “Homepage”
ตัวอย่าง: Purge Cache Strategy
ตัวอย่างการวางแผน Purge Cache ที่ดี:
เหตุการณ์
- อัปเดตรูปภาพเดียว: Custom Purge ระบุ URL ของรูป
- อัปเดต CSS/JS: Custom Purge ระบุไฟล์ CSS/JS เท่านั้น
- อัปเดตเนื้อหาหลัก: Purge Everything (ปลอดภัยกว่า)
- Deploy Version ใหม่: Purge Everything ผ่าน API Automation
- แก้ไข Bug สำคัญ: Purge Everything ทันที
- Update Product Database: Purge Tags ของ Product
- Update Blog Post: Custom Purge URL ของ Post นั้น
ข้อควรระวังเมื่อ Purge Cache
ระวังจุดนี้เมื่อ Purge Cache:
- ประสิทธิภาพลดลงชั่วคราว: เมื่อ Purge Everything Origin Server (เช่น VPS) ต้องดึงไฟล์ทั้งหมดใหม่ ซึ่งอาจทำให้เว็บช้า 5-10 นาที
- ไม่ควร Purge บ่อยเกินไป: การ Purge ทุกครั้งที่มีการเปลี่ยนแปลงเล็กน้อยจะทำให้เว็บช้าบ่อยเกินไป
- วางแผนการ Purge: ควร Purge ในเวลาที่ Traffic น้อย (เช่นเวลา 3 ตีเช้า)
- ดูที่ Cache TTL ของแต่ละ Resource: ไฟล์ที่มี TTL สูง (เช่น 1 สัปดาห์) อาจไม่ต้องลบวน ๆ
ตั้งค่า Auto Purge Cache ใน WordPress
หากใช้ VPS เป็น WordPress สามารถตั้งค่า Plugin เพื่อ Purge Cache อัตโนมัติ:
- Cloudflare Plugin: ติดตั้ง Plugin “Cloudflare” ของ Cloudflare เอง (ฟรี) ใน WordPress → เชื่อม API Token → เปิดให้ Purge อัตโนมัติเมื่อเผยแพร่ Post หรือเปลี่ยน Plugin
- W3 Total Cache: Plugin ยอดนิยมที่รองรับ Cloudflare Purge → ตั้งค่าให้ Purge เมื่อแก้ไข Post, Page, Comment, Widget หรืออัปเดต Plugin
- WP Super Cache: Plugin ที่เรียบง่าย แต่ support Cloudflare Purge ด้วย
วิธีติดตั้ง Cloudflare Plugin
- เข้า WordPress Dashboard → Plugins → Add New
- ค้นหา “Cloudflare” → ติดตั้ง Plugin ของ Cloudflare
- เปิดใช้งาน (Activate)
- ไปที่ Settings → Cloudflare
- กรอก Cloudflare API Token และ Account Email
- เปิด “Automatic Cache Purge on Post/Page Update”
- Save Settings
Cache Invalidation Best Practice
- ใช้ Cache Tags: แทนที่ Purge Everything บ่อย ให้ใช้ Cache Tags ของ Resource แต่ละประเภท เช่น “product”, “blog”, “homepage”
- ตั้งค่า Proper TTL: Static Files (CSS, JS, Images) ตั้ง TTL สูง (1 เดือน) Dynamic Content (HTML) ตั้ง TTL ต่ำ (5-30 นาที)
- Versioning Filenames: เมื่อ Deploy ไฟล์ใหม่ ให้เพิ่ม Version ใน Filename เช่น style.v2.css แทน style.css
- Use Cloudflare Workers: สำหรับ Cache Rules ที่ซับซ้อน ใช้ Workers เพื่อจัดการ Cache อัตโนมัติ
- Monitor Performance: หลังจากแต่ละ Purge ตรวจสอบ Page Load Time ว่า Purge มีผลหรือไม่
Debugging: ตรวจสอบ Cache Status
วิธีตรวจสอบว่า Page ถูก Cache หรือไม่:
curl -i https://yourdomain.com
# ดูที่ Response Headers
# CF-Cache-Status: HIT — ไฟล์ใช้จากCache
# CF-Cache-Status: MISS — ไฟล์ดึงจาก Origin ใหม่
# CF-Cache-Status: EXPIRED — Cache หมดอายุ
# CF-Cache-Status: BYPASS — ไฟล์ไม่ใช้ Cache
# CF-Cache-Status: PURGED — เพิ่งถูก Purge
# หรือใช้ Browser DevTools
# F12 → Network → ดูหัวข้อ "cf-cache-status"
สรุป
การ Purge Cache เป็นทักษะที่จำเป็นสำหรับทุกคนที่ใช้ Cloudflare ความเข้าใจว่าเมื่อไหรควร Purge และใช้วิธีใดจะช่วยให้เว็บไซต์ของคุณแสดงเนื้อหาล่าสุดเสมอ โดยไม่กระทบเครื่องมือประสิทธิภาพมากเกินไป ผู้ใช้ VPS และ Cloud Hosting ที่ใช้ Cloudflare ควรทำความเข้าใจ Purge Cache Strategy เพื่อให้เว็บไซต์ทั้งเร็ว (ด้วย Cache) และอัปเดต (ด้วย Purge ที่ถูกต้อง) พร้อมกัน

