แคช: ความหมายและทุกด้านที่ใช้การแคช

ประกาศแอฟฟิลิเอต Ver 3.1
ประกาศแอฟฟิลิเอต Ver 3.2 (เฉพาะมือถือ)

สรุปด้านที่ใช้แคช ตั้งแต่ฮาร์ดแวร์ไปจนถึงเว็บ ให้เป็นแผนผังเดียวตามการแบ่งของวิกิพีเดีย MDN และเอกสารทางการของ WordPress เนื่องจาก CPU ระบบปฏิบัติการ ฐานข้อมูล และเบราว์เซอร์ต่างก็ใช้ชื่อเดียวกัน คำว่า “ล้างแคช” จึงลบสิ่งที่ต่างกันไปตามชั้นที่พูดถึง

แคชคือการเก็บข้อมูลที่ใช้บ่อยหรือกำลังจะต้องใช้ไว้ชั่วคราวในที่เก็บที่เร็วกว่าต้นฉบับ และเมื่อมีคำขอเดิมเข้ามา ก็ตอบด้วยสำเนานั้นแทนต้นฉบับ

บทความ Cache (computing) ในวิกิพีเดียภาษาอังกฤษแบ่งแคชออกเป็นแคชฮาร์ดแวร์ เช่น แคช CPU·แคช GPU และแคชซอฟต์แวร์ เช่น แคชดิสก์·เว็บ·DNS·ฐานข้อมูล แผนผังด้านล่างจัดกลุ่มการแบ่งนี้ตามตำแหน่งที่แคชอยู่ ส่วนแคชเว็บใช้การแบ่ง private cache และ shared cache ของ MDN

🗂️ ด้านที่ใช้แคช
💻 Ⅰ. อุปกรณ์ของผู้ใช้
แคชระบบปฏิบัติการแคชดิสก์ · แคช DNS
แคชเบราว์เซอร์private cache ของแคช HTTP
แคชแอปมือถือภาพย่อ · ข้อมูลเซสชัน
🖥️ Ⅱ. เซิร์ฟเวอร์และแอปพลิเคชัน
แคชหน้าเว็บHTML ที่สร้างเสร็จแล้ว (WP Rocket · แคช FastCGI)
OPcacheไบต์โค้ด PHP
Object CacheRedis · Memcached
แคชของเว็บเฟรมเวิร์กLaravel · Django
🌐 Ⅲ. การส่งเนื้อหา · เครือข่าย
CDNshared cache ของแคช HTTP
แคชพร็อกซีแบบ Forward · Reverse (Varnish)
แคชเครือข่ายแคช ARP · แคช DNS Resolver
🗄️ Ⅳ. ฐานข้อมูล · สตอเรจ
แคชภายใน DBInnoDB Buffer Pool · Shared Buffers
แคชสตอเรจคอนโทรลเลอร์ดิสก์ · DRAM ของ SSD
⚙️ Ⅴ. ฮาร์ดแวร์
แคช CPUL1 · L2 · L3 · TLB
แคช GPUเท็กซ์เจอร์ · ข้อมูลเชเดอร์
☁️ Ⅵ. คลาวด์ · การจำลองเสมือน
แคชคอนเทนเนอร์เลเยอร์ Docker
ฟังก์ชัน ServerlessWarm Start
แคชบิลด์Dependency · ผลลัพธ์ CI/CD

ดูลำดับที่แคชของเบราว์เซอร์·CDN·ภายในเซิร์ฟเวอร์จัดการคำขอ WordPress หนึ่งครั้งได้ในบทความ แคชเว็บไซต์ & แคชภายในเซิร์ฟเวอร์: แคชของ WordPress ทำงานอย่างไร ซึ่งมีซิมูเลเตอร์ให้ลอง

Ⅰ. อุปกรณ์ของผู้ใช้

  • ↳ Client-Side Cache

แคชในอุปกรณ์ของผู้ใช้ เช่น คอมพิวเตอร์ส่วนตัวและสมาร์ตโฟน แบ่งได้เป็นแคชระบบปฏิบัติการ (OS) แคชเบราว์เซอร์ และแคชแอปมือถือ

แคชระบบปฏิบัติการ (OS)หน่วยความจำของอุปกรณ์ (RAM)
สิ่งที่เก็บข้อมูลที่อ่านจากดิสก์ · โดเมนและที่อยู่ IP

แคชดิสก์ (Page Cache) เก็บข้อมูลที่อ่านจากดิสก์ไว้ในหน่วยความจำ และเคอร์เนลของระบบปฏิบัติการเป็นผู้จัดการ ส่วนแคช DNS เก็บโดเมนและที่อยู่ IP ที่เพิ่งค้นหา

แคชดิสก์แคช DNS
แคชเบราว์เซอร์ที่เก็บข้อมูลของเบราว์เซอร์
สิ่งที่เก็บHTML · CSS · JS · รูปภาพ · ฟอนต์

เมื่อขอทรัพยากรเดิมอีกครั้ง เบราว์เซอร์จะไม่ไปถึงเซิร์ฟเวอร์ หรือแค่ตรวจว่ามีการเปลี่ยนแปลงหรือไม่ ถ้าใช้ Service Worker (Cache API) ก็เปิดเว็บแอปจากทรัพยากรที่เก็บไว้ได้แม้ออฟไลน์

private cacheService Worker
แคชแอปมือถือพื้นที่จัดเก็บของแอป
สิ่งที่เก็บภาพย่อ · เนื้อหาบางส่วน · สถานะการล็อกอิน

แอปที่จัดการเนื้อหาขนาดใหญ่จะเก็บข้อมูลที่รับมาแล้วและรายการที่เพิ่งดูไว้ในอุปกรณ์ เพื่อไม่ต้องรับข้อมูลเดิมซ้ำ

YouTubeInstagram

Ⅱ. แคชเซิร์ฟเวอร์และแอปพลิเคชัน

  • ↳ Server-Side Cache

แคชฝั่งเซิร์ฟเวอร์คือแคชที่อยู่ในขั้นตอนสร้างหน้าเว็บหลังคำขอมาถึงเซิร์ฟเวอร์ เอกสารทางการของ WordPress อธิบายโดยแบ่งเป็นปลั๊กอินแคช (แคชหน้า) Object Cache และแคชเซิร์ฟเวอร์ (แคช opcode อย่าง OPcache)

แคชหน้าเว็บดิสก์ · หน่วยความจำของเซิร์ฟเวอร์
สิ่งที่เก็บหน้า HTML ที่สร้างเสร็จแล้ว

สำหรับคำขอหน้าเดิม จะส่งสำเนาที่เก็บไว้โดยไม่รัน PHP มีทั้งปลั๊กอินแคชและแคชของเว็บเซิร์ฟเวอร์

WP Rocketแคช FastCGI ของ NginxLiteSpeed Cache
OPcacheหน่วยความจำของเซิร์ฟเวอร์
สิ่งที่เก็บไบต์โค้ด PHP ที่คอมไพล์แล้ว

ข้ามการคอมไพล์เมื่อรันไฟล์เดิมซ้ำ มีมาเป็นค่าเริ่มต้นตั้งแต่ PHP 5.5

แคช opcode
Object Cacheหน่วยความจำของเซิร์ฟเวอร์
สิ่งที่เก็บผลลัพธ์คิวรี · ข้อมูลเซสชัน

เก็บข้อมูลที่ใช้บ่อยไว้ในที่เก็บบนหน่วยความจำ เพื่อไม่ต้องรันคิวรีเดิมซ้ำ

RedisMemcached
แคชของเว็บเฟรมเวิร์กแอปพลิเคชัน
สิ่งที่เก็บเทมเพลต · Route · ผลลัพธ์คิวรี

เว็บเฟรมเวิร์กเก็บเทมเพลตที่เรนเดอร์แล้วและผลลัพธ์คิวรีไว้ในแคชของตัวเอง

LaravelDjango

Ⅲ. แคชการส่งเนื้อหา / โครงสร้างพื้นฐานเครือข่าย

แคชของโครงสร้างพื้นฐานเครือข่ายตอบด้วยสำเนาระหว่างผู้เข้าชมกับเซิร์ฟเวอร์ต้นทาง ช่วยลดระยะทางทางกายภาพและภาระของเซิร์ฟเวอร์ต้นทาง ในมาตรฐานแคช HTTP จัดเป็น shared cache ที่ผู้เข้าชมหลายคนใช้ร่วมกัน

CDNเซิร์ฟเวอร์ Edge
สิ่งที่เก็บไฟล์สแตติก · หน้าเว็บ

ส่งเนื้อหาจากเซิร์ฟเวอร์ที่ใกล้ผู้เข้าชมที่สุดในบรรดาเซิร์ฟเวอร์ที่กระจายอยู่ทั่วโลก โครงสร้างและข้อดีอธิบายไว้ใน CDN คืออะไร เหตุผลที่ควรใช้ CDN และข้อดี 5 ข้อ (บทความแยก)

CloudflareAkamaiFastlyQUIC.cloud
แคชพร็อกซีพร็อกซีเซิร์ฟเวอร์
สิ่งที่เก็บการตอบกลับของเซิร์ฟเวอร์

Forward Proxy เก็บการตอบกลับไว้ที่ฝั่งไคลเอนต์ เช่น เครือข่ายองค์กร ส่วน Reverse Proxy เก็บไว้ที่หน้าเซิร์ฟเวอร์

Varnish CacheReverse Proxy ของ Nginx
แคชเครือข่ายอุปกรณ์เครือข่าย · DNS Resolver
สิ่งที่เก็บการจับคู่ IP กับ MAC · ผลการค้นหา DNS

อุปกรณ์เครือข่ายเก็บไว้ในแคช ARP ส่วน DNS Resolver ของผู้ให้บริการอินเทอร์เน็ตและสาธารณะเก็บผลการค้นหาไว้ตาม TTL ของเรคคอร์ด

แคช ARPแคช DNS Resolver

Ⅳ. แคชฐานข้อมูลและระบบสตอเรจ

เพราะการอ่านเขียนดิสก์ช้า ฐานข้อมูลและอุปกรณ์จัดเก็บจึงยกข้อมูลที่อ่านบ่อยขึ้นไปไว้ในหน่วยความจำ

แคชภายในฐานข้อมูลหน่วยความจำของเซิร์ฟเวอร์ DB
สิ่งที่เก็บข้อมูลที่อ่านบ่อย · อินเด็กซ์

เก็บข้อมูลที่อ่านบ่อยและอินเด็กซ์ไว้ในหน่วยความจำ Query Cache ของ MySQL ถูกถอดออกในเวอร์ชัน 8.0 ส่วน MariaDB ยังมีอยู่แต่ปิดไว้เป็นค่าเริ่มต้น

InnoDB Buffer PoolPostgreSQL Shared BuffersMongoDB WiredTiger
แคชสตอเรจหน่วยความจำในอุปกรณ์จัดเก็บ
สิ่งที่เก็บข้อมูลอ่าน · เขียนล่าสุด

หน่วยความจำในคอนโทรลเลอร์ฮาร์ดดิสก์และ DRAM ใน SSD เก็บข้อมูลไว้ชั่วคราวเพื่อลดความหน่วงของการอ่านเขียน

แคชคอนโทรลเลอร์ดิสก์SSD · NVMe DRAM

Ⅴ. แคชระดับฮาร์ดแวร์

แคชฮาร์ดแวร์คือหน่วยความจำความเร็วสูงที่อยู่ใน CPU และ GPU ซึ่งประมวลผลข้อมูลได้เร็วกว่าหน่วยความจำหลัก (RAM)

แคช CPUภายในโปรเซสเซอร์
สิ่งที่เก็บคำสั่ง · ข้อมูล · ผลการแปลงที่อยู่

L1 แยกอยู่ในแต่ละคอร์และแบ่งเป็นแคชคำสั่งกับแคชข้อมูล ส่วน L3 ทุกคอร์ใช้ร่วมกัน หน่วยจัดการหน่วยความจำ (MMU) เก็บผลการแปลงที่อยู่เสมือนเป็นที่อยู่จริงไว้ใน TLB

L1L2L3TLB
แคช GPUภายในหน่วยประมวลผลกราฟิก
สิ่งที่เก็บเท็กซ์เจอร์ · คำสั่งเชเดอร์ · ผลลัพธ์ระหว่างทาง

เพิ่มประสิทธิภาพการประมวลผลของ GPU ในเกม กราฟิก 3D และการคำนวณแมชชีนเลิร์นนิง

Ⅵ. แคชในสภาพแวดล้อมคลาวด์ / การจำลองเสมือน

ในสภาพแวดล้อมคลาวด์และการจำลองเสมือน จะนำอิมเมจคอนเทนเนอร์ สภาพแวดล้อมการรันฟังก์ชัน และผลลัพธ์การบิลด์กลับมาใช้ซ้ำ เพื่อลดเวลาในการปรับใช้และการรัน

แคชคอนเทนเนอร์บิลด์เซิร์ฟเวอร์ · Registry
สิ่งที่เก็บเลเยอร์อิมเมจ

อิมเมจ Docker ประกอบด้วยหลายเลเยอร์ และเลเยอร์ที่ไม่เปลี่ยนจะไม่ถูกบิลด์หรือดาวน์โหลดใหม่

Docker
ฟังก์ชัน Serverlessสภาพแวดล้อมการรันบนคลาวด์
สิ่งที่เก็บสภาพแวดล้อมการรัน

เก็บสภาพแวดล้อมการรันที่เรียกใช้เสร็จแล้วไว้ช่วงหนึ่ง แล้วนำกลับมาใช้กับการเรียกครั้งถัดไป เพื่อลดเวลาเริ่มต้น (Cold Start) (Warm Start)

AWS LambdaGoogle Cloud Functions
แคชบิลด์ที่เก็บแคช CI
สิ่งที่เก็บไลบรารี Dependency · ผลลัพธ์การคอมไพล์

ลดเวลาการบิลด์ซ้ำ

GitHub ActionsGitLab CI

🔢 FAQ & เนื้อหาแนะนำ

ไม่ ล้างแคชเบราว์เซอร์จะลบเฉพาะสำเนาที่เก็บไว้ในอุปกรณ์ของผู้เข้าชม แคชหน้าบนเซิร์ฟเวอร์และสำเนาบน CDN ผู้ดูแลเว็บไซต์ต้องล้างเองผ่านปลั๊กอินแคชหรือหน้าจัดการ CDN

คำขอแรกหลังล้างแคชต้องไปถึงต้นทาง จึงตอบช้ากว่าปกติ เมื่อคำขอนั้นสร้างสำเนาใหม่แล้ว คำขอถัดไปจะกลับมาเร็วเท่าเดิม และ [Preload] ของ WP Rocket จะสร้างสำเนาไว้ล่วงหน้าหลังล้างแคช

ใน Windows ขนาดแคช L1·L2·L3 จะแสดงอยู่ด้านล่างของหน้า [Performance] → [CPU] ใน Task Manager ส่วน Linux ดูค่าเดียวกันได้จากผลลัพธ์ของคำสั่ง [lscpu]

💾 บทความเกี่ยวกับแคช 10 บทความ
🗂️ แคช
📋 แคช: ความหมายและทุกด้านที่ใช้ 📄 แคชเว็บไซต์ & แคชภายในเซิร์ฟเวอร์
📋 คู่มือตั้งค่า WP Rocket 📝 Zend OPcache 📝 ติดตั้ง Redis Cache
📝 CDN คืออะไร 📝 Varnish Cache
📋 ทดสอบความเร็ว WP Rocket 📝 กรณีศึกษาการเพิ่มความเร็ว 📝 ปลั๊กอินแคช · การปรับแต่ง

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

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *

Prove your humanity: 5   +   10   =