แคชเว็บไซต์ & แคชภายในเซิร์ฟเวอร์: แคชของ WordPress ทำงานอย่างไร

เมื่อตรวจแคชเว็บไซต์และแคชภายในเซิร์ฟเวอร์บนเซิร์ฟเวอร์ Nginx + Apache คำขอหน้าเว็บของ WordPress จะไล่ลงตามลำดับจากเบราว์เซอร์ ผ่าน CDN แคชหน้าเว็บ OPcache และ Redis แล้วหยุดที่ชั้นที่มีสำเนาอยู่ คำขอหน้าเว็บที่เข้ามาที่เซิร์ฟเวอร์ต้นทางโดยตรง nginx จะส่งไฟล์ HTML ที่ WP Rocket สร้างไว้ให้ทันที โดยไม่ลงไปถึง PHP และฐานข้อมูล
Ⅰ. โครงสร้างแคชของ WordPress
ในทางคอมพิวเตอร์ แคชคือเทคนิคการเก็บข้อมูลไว้ชั่วคราวเพื่อให้เข้าถึงได้เร็ว บนเว็บก็ทำงานด้วยหลักการเดียวกันและช่วยเพิ่มประสิทธิภาพได้มาก
การแคชเก็บข้อมูลไว้ เมื่อผู้เข้าชมเปิดเว็บไซต์ จึงไม่ต้องร้องขอจากเซิร์ฟเวอร์ใหม่ทุกครั้ง แต่โหลดข้อมูลที่เก็บไว้ได้อย่างรวดเร็ว ทำให้เวลาโหลดหน้าสั้นลง ช่วยลดภาระเซิร์ฟเวอร์และทำให้ประสบการณ์ผู้ใช้ดีขึ้น
แคชที่ใช้กับคำขอของ WordPress แบ่งเป็น 2 สาย คือแคชเว็บไซต์และแคชภายในเซิร์ฟเวอร์ มาตรฐานแคช HTTP แบ่งแคชที่เก็บไว้เฉพาะในเบราว์เซอร์ของผู้เข้าชมคนเดียวเป็น private cache และแคช CDN·พร็อกซีที่ผู้เข้าชมหลายคนใช้ร่วมกันเป็น shared cache บทความนี้รวมทั้งสองอย่างเป็นแคชเว็บไซต์
แคชหน้าเว็บ OPcache และแคชออบเจ็กต์ คือแคชที่ติดอยู่กับขั้นตอนที่ WordPress ทำงานภายในเซิร์ฟเวอร์ มาตรฐาน HTTP ไม่ได้แยกประเภทไว้ ส่วน เอกสารทางการของ WordPress แบ่งอธิบายเป็นปลั๊กอินแคช (แคชหน้าเว็บ) แคชออบเจ็กต์ และแคชเซิร์ฟเวอร์ (แคช opcode อย่าง OPcache)
ทุกด้านที่ใช้แคชสรุปไว้ใน แคช: ความหมายและทุกด้านที่ใช้การแคช (บทความแยก) ส่วนการปรับแต่งประสิทธิภาพ 4 ด้านซึ่งรวมถึงแคช สรุปไว้ใน การปรับแต่งประสิทธิภาพเว็บ: โครงสร้างและความหมาย (บทความแยก)
ในตัวจำลองด้านล่าง เลือกแคชจากโครงสร้างด้านซ้ายแล้วกดชิป จะเห็นว่าคำขอหยุดที่ชั้นไหน ชั้นที่ผู้ดูแล WordPress เปิดใช้เป็นอย่างแรกด้วยปลั๊กอินแคชคือแคชหน้าเว็บ
| ชั้น | ที่เก็บ | สิ่งที่เก็บ | ตัวอย่าง 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
โครงสร้างและข้อดีของ CDN สรุปไว้ใน CDN คืออะไร เหตุผลที่ควรใช้ CDN และข้อดี 5 ข้อ (บทความแยก)
Ⅲ. แคชภายในเซิร์ฟเวอร์
แคชภายในเซิร์ฟเวอร์คือแคชที่ติดอยู่กับขั้นตอนที่ WordPress สร้างหน้าเว็บหลังคำขอมาถึงเซิร์ฟเวอร์ต้นทาง เซิร์ฟเวอร์ที่ใช้ Nginx + Apache จะประมวลผลคำขอตามลำดับด้านล่าง และถ้าขั้นก่อนหน้าพบสำเนา ก็จะไม่ผ่านขั้นถัดไป
ระบบ Nginx + Apache เลือกเป็นตัวเลือกได้ใน Cloudways และ ScalaHosting โดย Cloudways ให้เลือกระหว่าง Hybrid Stack (Nginx + Apache) กับ Lightning Stack (Nginx อย่างเดียว) ในแต่ละแอปพลิเคชัน ส่วน ScalaHosting เปิดการตั้งค่าใน SPanel ที่วาง Nginx ไว้หน้า Apache ได้
| แคช | สิ่งที่เก็บ | เก็บเมื่อใด |
|---|---|---|
| 1️⃣ แคชหน้าเว็บ | หน้า HTML ที่สร้างเสร็จแล้ว | 🅑 ⑤ WP Rocket บันทึกเป็นไฟล์ตอนตอบกลับ |
| 2️⃣ OPcache | โค้ด PHP ที่คอมไพล์แล้ว (ไบต์โค้ด) | 🅑 ② เมื่อรันไฟล์ PHP ครั้งแรก |
| 3️⃣ แคชออบเจ็กต์ | ข้อมูลย่อย เช่น ผลลัพธ์คิวรี·ตัวเลือก | 🅑 ③ เมื่อ WordPress ดึงข้อมูลครั้งแรก |
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 & เนื้อหาแนะนำ









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