Page Rules คืออะไร ตั้งค่า Cache Everything สำหรับเว็บ WordPress บน Cloudflare

Cloudflare Page Rules คืออะไร

Page Rules คือฟีเจอร์ของ Cloudflare ที่ให้คุณสามารถสร้างกฎเฉพาะสำหรับ URL Pattern ต่างๆ บนเว็บไซต์ของคุณ ด้วย Page Rules คุณสามารถควบคุมวิธีการที่ Cloudflare ทำงานกับ URL นั้นๆ เช่น

  • ตั้งค่า Cache Level เป็น “Cache Everything”
  • Bypass Cache สำหรับ URL ที่ต้องการ
  • ตั้งค่า Edge Cache TTL (Time To Live)
  • บังคับใช้ SSL/TLS
  • ตั้งค่า Security Headers

ทำไม WordPress ต้องใช้ Cache Everything บน Cloudflare

โดยค่าเริ่มต้น Cloudflare จะ Cache เฉพาะไฟล์ Static เช่น CSS, JavaScript, Images และไฟล์ประเภท Media อื่นๆ แต่จะไม่ Cache HTML Content ของเว็บไซต์เอง

นี่เป็นเพราะว่า WordPress สร้าง Dynamic Content ทั้งหมด เช่น Blog Posts, Pages, Admin Sections เป็นต้น ซึ่ง Content เหล่านี้เปลี่ยนแปลงอยู่ตลอดเวลา

อย่างไรก็ตาม หากเว็บไซต์ของคุณสำหรับการอ่าน (ไม่มีการ Login ของ Visitor) คุณสามารถใช้ “Cache Everything” เพื่อให้ Cloudflare Cache HTML Content ได้ด้วย ซึ่งจะช่วยให้เว็บไซต์เร็วขึ้นอย่างมาก

ขั้นตอนการตั้งค่า

  1. เข้าไปที่ Cloudflare Dashboard ของโดเมนของคุณ
  2. ไปที่ RulesPage Rules
  3. คลิก Create Page Rule
  4. ใส่ URL Pattern: yourdomain.com/* (เปลี่ยน yourdomain.com เป็นโดเมนของคุณ)
  5. เลือก Setting: Cache LevelCache Everything
  6. คลิก Save and Deploy

Page Rule จะเปิดใช้ได้ทันที และ Cloudflare Edge Servers จะเริ่มแคชเนื้อหาตามกฎที่คุณตั้งไว้

ตั้งค่า Edge Cache TTL (Time To Live)

นอกจาก “Cache Everything” คุณยังสามารถตั้งค่า Edge Cache TTL เพื่อกำหนดว่า Cloudflare จะเก็บ Cache ไว้นานเท่าใด ก่อนที่จะต้องดึงข้อมูลใหม่จาก Origin Server (เซิร์ฟเวอร์ของคุณ)

  • 1 ชั่วโมง – สำหรับเนื้อหาที่อัปเดตค่อนข้างบ่อย
  • 1 วัน – สำหรับบล็อกที่ไม่เปลี่ยนแปลงบ่อย (ดีสุด)
  • 1 สัปดาห์ – สำหรับเนื้อหาที่เสถียรและไม่เปลี่ยนแปลงมาก
  • 2 สัปดาห์ – สำหรับเนื้อหา Static เช่น Pages ที่ไม่เปลี่ยน

ตั้งค่า Bypass Cache สำหรับ Admin Pages

สิ่งสำคัญมากที่ต้องจำไว้คือ WordPress Admin Pages (/wp-admin/*, /wp-login.php) ไม่ควร Cache เลย เพราะจะทำให้ Admin ไม่สามารถเข้าใจจำพวก Dynamic Functions ได้ถูกต้อง

สร้าง Page Rule Bypass สำหรับ /wp-admin/*

  • Pattern: yourdomain.com/wp-admin/*
  • Setting: Cache LevelBypass
  • คลิก Save

สร้าง Page Rule Bypass สำหรับ /wp-login.php

  • Pattern: yourdomain.com/wp-login.php
  • Setting: Cache LevelBypass
  • คลิก Save

(เพิ่มเติม) Bypass สำหรับ REST API

หากเว็บไซต์ของคุณใช้ WordPress REST API ที่มีการเปลี่ยนแปลงข้อมูลบ่อย ให้สร้าง Page Rule Bypass สำหรับ API Endpoint ด้วย

  • Pattern: yourdomain.com/wp-json/*
  • Setting: Cache LevelBypass

1. ลำดับของ Page Rules มีความสำคัญ

Cloudflare ประเมิน Page Rules จากบนลงล่าง (Top to Bottom) ดังนั้นให้วางกฎ Bypass ไว้ด้านบน และกฎ Cache Everything ไว้ด้านล่าง

ตัวอย่างลำดับที่ดี:

  1. yourdomain.com/wp-admin/* → Bypass
  2. yourdomain.com/wp-login.php → Bypass
  3. yourdomain.com/wp-json/* → Bypass
  4. yourdomain.com/* → Cache Everything (TTL: 1 day)

2. ใช้ URL Pattern ที่ชัดเจน

  • example.com/* – ตรงกับ URL ทั้งหมด
  • example.com/blog/* – ตรงกับ /blog/ และ subdirectory ทั้งหมด
  • example.com/api/*.json – ตรงกับ JSON API responses

3. Purge Cache เมื่อมีการอัปเดต

เมื่อคุณเขียนบทความหรืออัปเดตหน้าใหม่ ให้ไปที่ Cloudflare Dashboard → Caching → Purge Cache → Purge Everything (หรือ Purge by URL หากต้องการแค่ URL เฉพาะ) เพื่อลบ Cache เก่าออก

การตรวจสอบ Cache Status

หากต้องการตรวจสอบว่า Page Rule ทำงานถูกต้องหรือไม่ ให้ใช้คำสั่ง cURL เพื่อดู HTTP Header Response:

curl -I https://yourdomain.com/

มองหา Header ชื่อ CF-Cache-Status:

  • HIT – Cache มีและใช้งานได้ (ดี!)
  • MISS – ยังไม่มี Cache (ครั้งแรกหรือหมดอายุแล้ว)
  • BYPASS – Cache ถูก Bypass (ตามกฎ Page Rule)
  • EXPIRED – Cache หมดอายุแล้ว

Cache Rules: ทางเลือกใหม่แทน Page Rules

Cloudflare ได้นำเสนอฟีเจอร์ใหม่ชื่อ Cache Rules ซึ่งมีความยืดหยุ่นมากกว่า Page Rules และใช้งานง่ายกว่า หากคุณมี Plan ที่สูงขึ้น ลองใช้ Cache Rules แทนดูก็ได้

ความแตกต่างหลัก:

  • Page Rules: เก่าแต่เรียบง่าย มีจำนวดจำกัด Free Plan ให้ได้ 3 Rules
  • Cache Rules: ใหม่และมีความสามารถมากขึ้น Pro Plan ขึ้นไป

ปัญหา: Admin Dashboard ไม่ตอบสนอง

สาเหตุ: Admin Pages ถูก Cache เมื่อควรเป็น Dynamic

วิธีแก้ไข: ตรวจสอบว่าสร้าง Page Rule Bypass สำหรับ /wp-admin/* และ /wp-login.php แล้ว

ปัญหา: บทความใหม่ไม่แสดง

สาเหตุ: Cache ยังเก่าแต่ยังไม่หมดอายุ

วิธีแก้ไข: Purge Cache ทั้งหมดจาก Cloudflare Dashboard → Caching → Purge Everything

ปัญหา: API Response ไม่ถูกต้อง

สาเหตุ: API Response ถูก Cache แม้ว่าข้อมูลเปลี่ยน

วิธีแก้ไข: สร้าง Page Rule สำหรับ /wp-json/* ที่เป็น Bypass หรือกำหนด TTL สั้น (5-10 นาที)

สรุป

ข้อหลักที่ต้องจำ:

  • สร้าง Bypass Page Rules สำหรับ /wp-admin/ และ /wp-login.php ก่อน
  • ตั้ง Cache Everything สำหรับ URL หลัก
  • กำหนด Edge Cache TTL ให้เหมาะสม (แนะนำ 1 วัน)
  • Purge Cache เมื่อมีการอัปเดตเนื้อหา
  • ตรวจสอบ CF-Cache-Status Header เพื่อตรวจสอบการทำงาน

หากต้องการความยืดหยุ่นมากขึ้น ลองใช้ Cloudflare Cache Rules แทน Page Rules ได้เช่นกัน