แคชเว็บไซต์ & แคชภายในเซิร์ฟเวอร์: แคชของ WordPress ทำงานอย่างไร
แคชเว็บไซต์และแคชภายในเซิร์ฟเวอร์คือชั้นแคชที่เก็บสำเนาไว้ตลอดเส้นทางที่คำขอหน้าเว็บของ WordPress เดินทางจากเบราว์เซอร์ของผู้เข้าชมไปถึงฐานข้อมูล เมื่อตรวจบนเซิร์ฟเวอร์ Nginx + Apache คำขอจะไล่ลงตามลำดับจากเบราว์เซอร์ ผ่าน CDN แคชหน้าเว็บ OPcache และ Redis แล้วหยุดที่ชั้นที่มีสำเนาอยู่
คำขอหน้าเว็บที่เข้ามาที่เซิร์ฟเวอร์ต้นทางโดยตรง nginx จะส่งไฟล์ HTML ที่ WP Rocket สร้างไว้ไปตามเดิม โดยไม่ผ่าน PHP และฐานข้อมูล
Ⅰ. โครงสร้างแคชของ WordPress
แคชชิงคือวิธี การปรับแต่งประสิทธิภาพเว็บ ที่เก็บสำเนาของข้อมูลที่สร้างไว้แล้วครั้งหนึ่ง แล้วตอบคำขอเดียวกันด้วยสำเนานั้น แคชที่ใช้กับคำขอของ WordPress แบ่งเป็น 2 สาย คือแคชเว็บไซต์และแคชภายในเซิร์ฟเวอร์ มาตรฐานแคช HTTP แบ่งแคชที่เก็บไว้เฉพาะในเบราว์เซอร์ของผู้เข้าชมคนเดียวเป็น private cache และแคช CDN·พร็อกซีที่ผู้เข้าชมหลายคนใช้ร่วมกันเป็น shared cache บทความนี้รวมทั้งสองอย่างเป็นแคชเว็บไซต์
แคชหน้าเว็บ OPcache และแคชออบเจ็กต์ คือแคชที่ติดอยู่กับขั้นตอนที่ WordPress ทำงานภายในเซิร์ฟเวอร์ มาตรฐาน HTTP ไม่ได้แยกประเภทไว้ ส่วน เอกสารทางการของ WordPress แบ่งอธิบายเป็นปลั๊กอินแคช (แคชหน้าเว็บ) แคชออบเจ็กต์ และแคชเซิร์ฟเวอร์ (แคช opcode อย่าง OPcache)
ในตัวจำลองด้านล่าง เลือกแคชจากโครงสร้างด้านซ้ายแล้วกดชิป จะเห็นว่าคำขอหยุดที่ชั้นไหน
| ชั้น | ที่เก็บ | สิ่งที่เก็บ | ตัวอย่าง Nginx + Apache |
|---|---|---|---|
| แคชเบราว์เซอร์ | อุปกรณ์ของผู้เข้าชม | HTML·CSS·JS·รูปภาพ·ฟอนต์ | CSS·รูปภาพ 7 วัน |
| แคช CDN·พร็อกซี | ด้านหน้าเซิร์ฟเวอร์ (edge·รีเวิร์สพร็อกซี) | สำเนาหน้าเว็บ·ไฟล์สแตติก | Bunny CDN |
| แคชหน้าเว็บ | ดิสก์·หน่วยความจำของเซิร์ฟเวอร์ | HTML ที่ PHP สร้าง | WP Rocket + nginx |
| OPcache | หน่วยความจำของเซิร์ฟเวอร์ | ไบต์โค้ด PHP | PHP 8.3, ปิด JIT |
| Object Cache | หน่วยความจำของเซิร์ฟเวอร์ | ผลลัพธ์คิวรี·ออบเจ็กต์ | Redis |
Ⅱ. แคชเว็บไซต์
แคชเว็บไซต์คือแคชที่เบราว์เซอร์ของผู้เข้าชม รวมถึง CDN และพร็อกซีเก็บสำเนาไว้ตามคำสั่งที่เซิร์ฟเวอร์บอกผ่านเฮดเดอร์การตอบกลับ เฮดเดอร์ที่พบบ่อยคือ [Cache-Control], [ETag] และ [Expires] เมื่อพ้นระยะเวลาเก็บ จะใช้คำขอแบบมีเงื่อนไขตรวจว่ามีการเปลี่ยนแปลงหรือไม่ ถ้าไม่มีการเปลี่ยนแปลง เซิร์ฟเวอร์จะตอบกลับด้วย [304 Not Modified] โดยไม่มีเนื้อหา
1️⃣ แคชเบราว์เซอร์
แคชเบราว์เซอร์คือแคช HTTP ที่เก็บไว้ในเว็บเบราว์เซอร์ของผู้เข้าชม โดยเก็บ HTML, CSS, JavaScript, รูปภาพ และฟอนต์ไว้ เมื่อขอทรัพยากรเดิมอีกครั้งก็จะไม่ไปถึงเซิร์ฟเวอร์ หรือแค่ตรวจว่ามีการเปลี่ยนแปลงหรือไม่
ระยะเวลาเก็บกำหนดโดยเซิร์ฟเวอร์ผ่านเฮดเดอร์การตอบกลับ เซิร์ฟเวอร์ Nginx + Apache ที่ส่งเฮดเดอร์การตอบกลับด้านล่างมาสั่งให้เก็บ CSS และรูปภาพ 7 วัน ส่วนหน้า HTML ตอบกลับโดยไม่กำหนดระยะเวลา เพื่อให้ตรวจว่ามีการเปลี่ยนแปลงหรือไม่ทุกครั้งที่เข้าชม
If-None-Match: "6ab12775-2ee8"cache-control: max-age=604800 expires: Sat, 17 Oct 2026 03:21:00 GMT etag: "6ab12775-2ee8"
etag: "6ac9298c-95575" last-modified: Fri, 09 Oct 2026 17:51:08 GMT
2️⃣ แคช CDN · พร็อกซี
แคช CDN·พร็อกซีอยู่ระหว่างผู้เข้าชมกับเซิร์ฟเวอร์ต้นทาง และผู้เข้าชมหลายคนใช้ร่วมกัน พร็อกซีแบบไปข้างหน้าอยู่ฝั่งผู้เข้าชม เช่น ในเครือข่ายบริษัท ส่วนรีเวิร์สพร็อกซีและ CDN อยู่ด้านหน้าเซิร์ฟเวอร์ และตอบกลับด้วยสำเนาที่เก็บไว้แทนเซิร์ฟเวอร์ต้นทาง
รีเวิร์สพร็อกซีที่เป็นตัวแทนคือ Varnish Cache และ CDN อย่าง Bunny CDN·Akamai ก็ใช้โครงสร้างเดียวกัน ถ้าใช้ DNS ตามภูมิภาค ผู้เข้าชมในภูมิภาคที่เซิร์ฟเวอร์ต้นทางอยู่จะเชื่อมต่อไปที่เซิร์ฟเวอร์ต้นทางโดยตรง ส่วนผู้เข้าชมในภูมิภาคอื่นจะได้รับการตอบกลับจาก edge ของ CDN ที่ใกล้ที่สุด (เช่น Bunny CDN) ซึ่งเก็บไว้ถึง HTML
Ⅲ. แคชภายในเซิร์ฟเวอร์
แคชภายในเซิร์ฟเวอร์คือแคชที่ติดอยู่กับขั้นตอนที่ WordPress สร้างหน้าเว็บหลังคำขอมาถึงเซิร์ฟเวอร์ต้นทาง เซิร์ฟเวอร์ที่ใช้ Nginx + Apache จะประมวลผลคำขอตามลำดับด้านล่าง และถ้าขั้นก่อนหน้าพบสำเนา ก็จะไม่ผ่านขั้นถัดไป
| แคช | สิ่งที่เก็บ | เก็บเมื่อใด |
|---|---|---|
| 1️⃣ แคชหน้าเว็บ | หน้า HTML ที่สร้างเสร็จแล้ว | 🅑 ⑤ WP Rocket บันทึกเป็นไฟล์ตอนตอบกลับ |
| 2️⃣ OPcache | โค้ด PHP ที่คอมไพล์แล้ว (ไบต์โค้ด) | 🅑 ② เมื่อรันไฟล์ PHP ครั้งแรก |
| 3️⃣ แคชออบเจ็กต์ | ข้อมูลย่อย เช่น ผลลัพธ์คิวรี·ตัวเลือก | 🅑 ③ เมื่อ WordPress ดึงข้อมูลครั้งแรก |
ระบบ Nginx + Apache เลือกเป็นตัวเลือกได้ใน Cloudways และ ScalaHosting โดย Cloudways ให้เลือกระหว่าง Hybrid Stack (Nginx + Apache) กับ Lightning Stack (Nginx อย่างเดียว) ในแต่ละแอปพลิเคชัน ส่วน ScalaHosting เปิดการตั้งค่าใน SPanel ที่วาง Nginx ไว้หน้า Apache ได้
1️⃣ แคชหน้าเว็บ
แคชหน้าเว็บเรียกอีกชื่อว่า full-page cache และเพราะสิ่งที่เก็บคือ HTML จึงเรียกว่าแคช HTML ได้ด้วย โดยจะเก็บหน้าเว็บทั้งหน้าที่ PHP สร้างไว้เป็นไฟล์ HTML แบบสแตติก แล้วส่งไฟล์นั้นให้คำขอหน้าเดียวกันโดยไม่ต้องรัน PHP ซึ่งตรงกับกรณี 🅐 ในลำดับการประมวลผลด้านบน
ที่เก็บคือหน่วยความจำของเซิร์ฟเวอร์ (RAM) หรือดิสก์ (HDD/SSD) หน่วยความจำเร็วแต่มีราคาสูงและความจุจำกัด ส่วนดิสก์มีความจุเหลือเฟือแต่ค่อนข้างช้า
| ประเภท | ตัวอย่าง | วิธีเก็บ·ตอบกลับ |
|---|---|---|
| ปลั๊กอินแคช | WP Rocket · WP Super Cache · W3 Total Cache · Cache Enabler | WordPress บันทึกหน้าเว็บเป็นไฟล์ HTML และเว็บเซิร์ฟเวอร์ส่งไฟล์นั้น |
| แคชของเว็บเซิร์ฟเวอร์ | แคช Nginx FastCGI · LiteSpeed Cache | เว็บเซิร์ฟเวอร์เก็บการตอบกลับของ PHP เองแล้วส่งให้คำขอครั้งถัดไป |
| แคชรีเวิร์สพร็อกซี | Varnish | เซิร์ฟเวอร์แคชที่วางไว้หน้าเว็บเซิร์ฟเวอร์จะเก็บหน้าเว็บและตอบกลับ |
ในระบบ Nginx + Apache nginx จะอ่านไฟล์ HTML ที่ WP Rocket สร้างแล้วส่งเองโดยตรง และเฮดเดอร์การตอบกลับจะมี [x-rocket-nginx-serving-file: HIT] ขั้นตอนเปิดและตั้งค่าแคชหน้าเว็บด้วย WP Rocket สรุปไว้ใน คู่มือตั้งค่า WP Rocket (บทความแยก)
2️⃣ OPcache
OPcache เก็บไบต์โค้ดที่คอมไพล์โค้ด PHP ไว้ล่วงหน้าในหน่วยความจำ เมื่อรันไฟล์เดิมอีกครั้งจึงไม่ต้องผ่านตัวแยกวิเคราะห์ของ PHP มีมาให้ตั้งแต่ PHP 5.5 ส่วนตัวเก่าอย่าง APC และ XCache ไม่รองรับ PHP 7 ตอนนี้จึงไม่มีใครใช้แล้ว ตรงกับขั้นที่ ② ของ 🅑 ในลำดับการประมวลผลด้านบน
| ประเภท | สถานะ | คำอธิบาย |
|---|---|---|
| Zend OPcache | มีมาให้ตั้งแต่ PHP 5.5 | แคช opcode มาตรฐานที่ใช้กันในปัจจุบัน เปิดด้วย [opcache.enable=1] |
| OPcache JIT | รวมอยู่ใน OPcache ตั้งแต่ PHP 8 | แปลงไบต์โค้ดเป็นภาษาเครื่องอีกขั้นแล้วรัน เปิดปิดด้วย [opcache.jit] |
| APC | หยุดพัฒนาแล้ว | แคช opcode ที่ใช้ก่อนมี OPcache ส่วนความสามารถแคชข้อมูลไปต่อใน APCu |
| XCache | หยุดพัฒนาแล้ว | ไม่รองรับ PHP 7 |
| WinCache | สำหรับเซิร์ฟเวอร์ Windows (IIS) | แคช opcode ที่เอกสารทางการของ WordPress ยกมาพร้อมกับ OPcache |
OPcache เปิดด้วยการตั้งค่า PHP [opcache.enable=1] ส่วน JIT ที่มีตั้งแต่ PHP 8 ปิดแยกได้ด้วย [opcache.jit=disable] การติดตั้งและตั้งค่าอยู่ใน แนวคิด Zend OPcache การติดตั้ง และการตั้งค่า (บทความแยก)
3️⃣ แคชออบเจ็กต์
แคชออบเจ็กต์เก็บผลลัพธ์คิวรีฐานข้อมูลหรือออบเจ็กต์ที่คำนวณแล้วไว้ในที่เก็บบนหน่วยความจำอย่าง Redis·Memcached โดยค่าเริ่มต้น WordPress จำออบเจ็กต์ไว้เฉพาะในคำขอเดียว ต้องต่อที่เก็บอย่าง Redis ผลลัพธ์จึงจะยังอยู่หลังคำขอจบ ตรงกับขั้นที่ ③ ของ 🅑 ในลำดับการประมวลผลด้านบน
| ประเภท | หมวด | ยังอยู่หลังคำขอจบไหม | คำอธิบาย |
|---|---|---|---|
| WP_Object_Cache | ค่าเริ่มต้นของ WordPress | ไม่ | แคชในตัวที่จำได้เฉพาะในคำขอเดียว |
| Redis | Object Cache | ใช่ | ที่เก็บบนหน่วยความจำแยกต่างหาก เชื่อมต่อผ่าน drop-in ของปลั๊กอิน Redis Object Cache |
| Memcached | Object Cache | ใช่ | ที่เก็บบนหน่วยความจำแยกต่างหาก |
| APCu | Object Cache | ใช่ (ภายในเซิร์ฟเวอร์เดียวกัน) | เก็บไว้ในหน่วยความจำที่ใช้ร่วมกันของ PHP |
| ไฟล์ | Object Cache | ใช่ | เก็บเป็นไฟล์บนดิสก์ |
| InnoDB Buffer Pool | แคชในตัวของฐานข้อมูล · ไม่ใช่แคชออบเจ็กต์ | ใช่ | MySQL·MariaDB โหลดข้อมูลตารางและดัชนีไว้ในหน่วยความจำ |
| แคชคิวรี | แคชในตัวของฐานข้อมูล · ไม่ใช่แคชออบเจ็กต์ | — | ถูกนำออกใน MySQL 8.0 ยังมีอยู่ใน MariaDB แต่ปิดไว้เป็นค่าเริ่มต้น |
WordPress เชื่อมต่อ Redis ผ่านไฟล์ drop-in ([object-cache.php]) ที่ปลั๊กอิน Redis Object Cache ใส่ไว้ ขั้นตอนติดตั้งอยู่ใน ติดตั้งและตั้งค่า Redis Cache ใน WordPress (บทความแยก)
🔢 FAQ & เนื้อหาแนะนำ









ℹ️ ประกาศเรื่องลิงก์แอฟฟิลิเอต
เนื้อหาของเว็บไซต์นี้มีลิงก์แอฟฟิลิเอต หากผู้เข้าชมซื้อสินค้าหรือบริการผ่านลิงก์เหล่านี้ เว็บไซต์นี้จะได้รับค่าคอมมิชชันจากผู้ขาย ในกระบวนการนี้ ราคาที่ผู้ซื้อจ่าย(ราคาจะลดลงเมื่อมีโปรโมชัน↓)จะไม่สูงขึ้นแต่อย่างใด ราคา ส่วนลด และข้อมูลสต็อกที่แสดงเป็นข้อมูล ณ เวลาที่เขียนและอาจต่างจากความเป็นจริง โปรดตรวจสอบกับผู้ขายอีกครั้งก่อนซื้อ การเลือกและการประเมินสินค้าเขียนตามเกณฑ์ของเราเอง และการได้รับค่าคอมมิชชันหรือไม่ไม่มีผลต่อลำดับการแนะนำหรือเนื้อหาการประเมิน