CDN คืออะไร เครือข่ายส่งมอบเนื้อหา (Content Delivery Network) อธิบายแบบเข้าใจง่าย
CDN (content delivery network) คือเครือข่ายเซิร์ฟเวอร์ที่กระจายอยู่ในหลายเมือง และเก็บสำเนาไฟล์ของเว็บไซต์ของคุณ ไม่ว่าจะเป็นรูปภาพ สคริปต์ ไฟล์สไตล์ และบางครั้งทั้งหน้า เมื่อมีคนเข้าชมเว็บไซต์ เขาจะได้รับไฟล์จากตำแหน่งที่อยู่ใกล้เขา แทนที่จะจากเซิร์ฟเวอร์ที่อยู่ไกลออกไป ซึ่งทำให้หน้าโหลดเร็วขึ้น ลดภาระของเซิร์ฟเวอร์ของคุณเอง และช่วยให้เว็บไซต์รับมือกับการเข้าชมที่พุ่งสูงได้ดีขึ้น
ทำไม CDN จึงสำคัญเมื่อสร้างด้วย AI
คุณอาจไม่เคยตั้งค่า CDN เอง เพราะแพลตฟอร์มโฮสติ้งหลายแห่งวาง CDN ไว้หน้าเว็บไซต์ให้โดยอัตโนมัติ แต่คุณจะรู้สึกถึงผลลัพธ์ของมันอยู่ดี:
- ความเร็ว หน้าที่โหลดเร็วทำให้ผู้เข้าชมอยู่ต่อ และเป็นหนึ่งในสิ่งที่เครื่องมือค้นหาพิจารณา ดู วิธีทำให้เว็บไซต์เร็วขึ้น
- “ทำไมการเปลี่ยนแปลงของฉันยังไม่ขึ้น” หลังเผยแพร่การอัปเดต สำเนาที่แคชของเวอร์ชันเก่าอาจค้างอยู่ชั่วครู่ การรู้สาเหตุจะช่วยประหยัดเวลาไปได้มาก
- ความเป็นส่วนตัวและความถูกต้อง ถ้า CDN แคชสิ่งที่ไม่ควรแคช เช่น หน้าที่มีรายละเอียดของผู้ใช้คนหนึ่ง ผู้เข้าชมคนถัดไปก็อาจเห็นข้อมูลนั้นได้ การรู้ว่าอะไรควรและไม่ควรแคชจะช่วยให้คุณถามคำถามที่ถูกต้อง
ตัวอย่างใกล้ตัว
ลองนึกถึงร้านเบเกอรี่ที่ขายขนมปังทั่วประเทศจากร้านเดียว ลูกค้าทุกคน ไม่ว่าจะอยู่ไกลแค่ไหน ต้องรอให้ขนมปังถูกส่งจากร้านนั้น และในวันที่คนเยอะ คิวก็ยาวมาก
CDN ก็เหมือนการนำขนมปังไปวางขายในร้านชุมชนทั่วประเทศ ลูกค้าไปซื้อใกล้บ้านได้อย่างรวดเร็ว และร้านหลักแค่ต้องส่งของเติมร้านชุมชนเป็นครั้งคราว แต่มีข้อจำกัด: เมื่อเบเกอรี่เปลี่ยนสูตร ร้านชุมชนก็ยังขายขนมปังสูตรเก่าต่อไป จนกว่าจะได้รับแจ้งให้เปลี่ยนหรือของเก่าหมดอายุ
CDN ทำงานอย่างไร
- Origin (ต้นทาง) เว็บไซต์ของคุณอยู่บนเซิร์ฟเวอร์หลักหรือแพลตฟอร์มโฮสติ้ง เรียกว่า origin
- Edge locations CDN มีเซิร์ฟเวอร์อยู่หลายแห่ง เรียกว่า edge locations หรือ points of presence
- การนำทาง (routing) เมื่อผู้เข้าชมขอเว็บไซต์ DNS หรือการกำหนดเส้นทางของเครือข่ายจะส่งเขาไปยัง edge ที่ใกล้ที่สุด ดู โดเมนและ DNS ทำงานอย่างไร
- Cache hit ถ้า edge นั้นมีสำเนาที่ยังสดใหม่ของไฟล์อยู่แล้ว ก็ส่งให้ทันที
- Cache miss ถ้าไม่มี edge จะดึงไฟล์จาก origin ส่งให้ผู้เข้าชม และเก็บสำเนาไว้สำหรับคนถัดไป
- หมดอายุ สำเนาแต่ละชุดจะถูกเก็บไว้ตามระยะเวลาที่กำหนด ซึ่งควบคุมโดย cache headers ที่เซิร์ฟเวอร์ของคุณส่งมา หรือจนกว่าจะถูกล้างออก
ตัวอย่างจริง: เว็บพอร์ตโฟลิโอพร้อมรูปถ่าย
พอร์ตโฟลิโอของช่างภาพมีหน้าแรก แกลเลอรีรูปขนาดใหญ่ 60 รูป และฟอร์มติดต่อ origin อยู่ในยุโรป ผู้เข้าชมคนหนึ่งในสิงคโปร์เปิดแกลเลอรี
- ไม่มี CDN: รูปทุกรูปต้องเดินทางจากยุโรป แต่ละคำขอใช้เวลาไปกลับข้ามโลก แกลเลอรีจึงค่อย ๆ แสดงผล
- มี CDN: ผู้เข้าชมคนแรกใกล้สิงคโปร์ทำให้ edge ที่นั่นดึงรูปมาและเก็บไว้ ผู้เข้าชมคนต่อ ๆ มาในภูมิภาคนั้นจะได้รับรูปจากที่ใกล้กว่ามาก เร็วกว่ามาก
ตอนนี้ช่างภาพเปลี่ยนรูปหลักของหน้าแรกและเผยแพร่ใหม่ สิ่งที่กำหนดว่าผู้เข้าชมจะเห็นการเปลี่ยนแปลงหรือไม่คือ:
/index.html → อายุแคชสั้น ตรวจบ่อย
/assets/index-3f9a2c.js → แคชไว้นาน
/assets/hero-8b41d0.jpg → แคชไว้นาน
เครื่องมือ build สมัยใหม่ รวมถึง Vite ตั้งชื่อไฟล์แบบ hashed เช่น hero-8b41d0.jpg เมื่อไฟล์เปลี่ยน ชื่อก็เปลี่ยนตามไปด้วย หน้าเว็บจึงขอไฟล์ใหม่เอี่ยมที่ไม่เคยมีในแคชใดเลย ตัวหน้า HTML เองถูกแคชไว้เพียงระยะสั้น ๆ เพื่อให้ชี้ไปยังไฟล์ใหม่ได้เร็ว นี่เป็นวิธีมาตรฐานที่ได้ทั้งการแคชที่นานและการอัปเดตที่สดใหม่
แบบฟอร์มติดต่อต่างออกไป การส่งข้อมูลจากฟอร์มไปยังเซิร์ฟเวอร์ทุกครั้ง และไม่ควรถูกแคชเลย
อะไรควรแคชและอะไรไม่ควร
| โดยทั่วไปควรแคช (นาน) | โดยทั่วไปแคชระยะสั้น | ไม่ควรแคชใน CDN ที่ใช้ร่วมกัน |
|---|---|---|
| รูปภาพ ฟอนต์ วิดีโอ | หน้า HTML ของเว็บไซต์สาธารณะ | หน้าที่ต้องล็อกอิน แดชบอร์ด |
| JavaScript และ CSS ที่มีชื่อแบบ hashed | ข้อมูล API สาธารณะที่เปลี่ยนไม่บ่อย | ข้อมูลส่วนตัวทุกชนิด |
| ไฟล์ดาวน์โหลดที่แทบไม่เปลี่ยน | การส่งฟอร์ม การชำระเงิน คำขอ POST ทุกชนิด |
คำศัพท์สำคัญ
| คำศัพท์ | ความหมาย |
|---|---|
| Origin | เซิร์ฟเวอร์หลักหรือโฮสต์ของคุณ ที่ซึ่งไฟล์จริงอยู่ |
| Edge / PoP | ตำแหน่งของ CDN ที่ให้บริการผู้เข้าชมที่อยู่ใกล้ |
| Cache hit / miss | edge มีไฟล์อยู่แล้ว / ต้องไปดึงจาก origin |
| TTL | Time to live คือระยะเวลาที่เก็บสำเนาที่แคชไว้ |
| Cache-Control header | คำสั่งที่เซิร์ฟเวอร์ส่งมาบอกว่าสิ่งใดแคชได้หรือไม่ และนานเท่าใด |
| Purge / invalidate | สั่งให้ CDN ทิ้งสำเนาที่แคชไว้ทันที |
| Cache busting | เปลี่ยนชื่อไฟล์หรือ URL เมื่อไฟล์เปลี่ยน เพื่อให้แคชดึงของใหม่ |
| Latency | ความหน่วงที่เกิดจากระยะทางและจำนวนจุดที่ข้อมูลผ่าน |
เรื่องการแคชโดยทั่วไป ทั้งในเบราว์เซอร์ เซิร์ฟเวอร์ และฐานข้อมูล ดูได้ที่ การแคชคืออะไร
ความเข้าใจผิดที่พบบ่อย
- “CDN ทำให้ทุกอย่างเร็วขึ้น” มันเร่งการส่งไฟล์เท่านั้น การ query ฐานข้อมูลที่ช้า หรือการเรียก AI ที่ช้าบนเซิร์ฟเวอร์ของคุณก็ยังช้าอยู่
- “CDN มาแทนที่โฮสติ้ง” มันอยู่หน้าโฮสติ้งของคุณ คุณยังต้องมี origin
- “ถ้าอัปเดตเว็บแล้ว ทุกคนจะเห็นทันที” สำเนาเก่าอาจค้างอยู่ใน CDN และในเบราว์เซอร์ได้ชั่วครู่ ให้ hard-refresh เพื่อตรวจสอบ และใช้ชื่อไฟล์แบบ hashed
- “การแคชปลอดภัยเสมอ” การแคชหน้าที่เป็นส่วนตัวใน cache ที่ใช้ร่วมกันคือความเสี่ยงด้านความเป็นส่วนตัวจริง การตอบสนองส่วนตัวควรถูกทำเครื่องหมายว่าแคชไม่ได้
- “CDN มีไว้สำหรับบริษัทใหญ่เท่านั้น” โฮสต์จำนวนมากมี CDN ให้กับเว็บไซต์ขนาดเล็กโดยไม่ต้องลงแรงเพิ่ม
สิ่งที่ควรถามตัวสร้างแอปด้วย AI
- “มี CDN อยู่หน้าเว็บไซต์นี้ไหม แคชไฟล์ใดบ้าง และนานเท่าใด”
- “ตรวจให้แน่ใจว่า JavaScript, CSS และรูปภาพที่ build แล้วมีชื่อไฟล์แบบ hashed และมีอายุแคชนาน ส่วน HTML มีอายุแคชสั้น”
- “อย่าแคชหน้าที่ล็อกอินแล้ว หรือ API response ที่มีข้อมูลส่วนตัว ใน cache ที่ใช้ร่วมกัน”
- “บีบอัดและปรับขนาดรูปภาพ เพื่อให้แกลเลอรีโหลดได้เร็ว”
- “ฉันเผยแพร่การอัปเดตแล้ว แต่ยังเห็นเวอร์ชันเก่า เป็นเพราะแคชของเบราว์เซอร์หรือของ CDN”
CDN กับ Mythex
เมื่อคุณเผยแพร่บน Mythex ฟรอนต์เอนด์แบบสแตติกจะถูกปล่อยใช้งานเป็นเว็บไซต์สแตติก และเอกสารระบุว่าแคชของ CDN อาจล่าช้าไปชั่วครู่หลังการอัปเดต ถ้าคุณยังเห็นเวอร์ชันเก่าหลังเผยแพร่ใหม่ ให้ hard-refresh URL สาธารณะ ไม่ต้องตั้งค่าอะไรเพิ่มเติม ถ้าคุณเชื่อมโดเมนที่กำหนดเองซึ่ง DNS อยู่บน Cloudflare เอกสารขอให้ตั้งค่าระเบียนเป็น “DNS only” แทนการ proxy เพื่อให้ Mythex ออก HTTPS ได้อย่างถูกต้อง ดู วิธีเผยแพร่ และ โดเมนที่กำหนดเอง ในเอกสาร และดูคู่มือของเรา การโฮสต์เว็บ ประกอบ
คำถาม
CDN คืออะไรแบบง่าย ๆ
CDN (content delivery network) คือเครือข่ายเซิร์ฟเวอร์ที่อยู่ในหลายพื้นที่และเก็บสำเนาไฟล์ของเว็บไซต์ของคุณ ผู้เข้าชมจะได้รับไฟล์จากตำแหน่งที่ใกล้ตัวแทนที่จะมาจากเซิร์ฟเวอร์หลัก ทำให้หน้าโหลดเร็วขึ้นและเซิร์ฟเวอร์ของคุณทำงานน้อยลง
ทำไมหลังอัปเดตเว็บไซต์แล้วยังเห็นเวอร์ชันเก่าอยู่
โดยทั่วไปเป็นเพราะสำเนาของไฟล์เก่ายังถูกแคชอยู่ ไม่ว่าจะใน CDN ในเบราว์เซอร์ หรือทั้งสองที่ การกดรีเฟรชแบบ hard refresh แก้ปัญหาฝั่งเบราว์เซอร์ ส่วนสำเนาใน CDN จะหมดอายุเองหรือล้างได้ เครื่องมือ build ช่วยหลีกเลี่ยงปัญหานี้ส่วนใหญ่ด้วยการตั้งชื่อไฟล์ที่เปลี่ยนแปลงใหม่
เว็บไซต์เล็ก ๆ ต้องใช้ CDN ไหม
หลายครั้งคุณมี CDN อยู่แล้วโดยไม่ได้เลือกไว้ เพราะแพลตฟอร์มโฮสติ้งหลายแห่งวาง CDN ไว้หน้าเว็บไซต์โดยอัตโนมัติ ถ้าของคุณไม่มี และผู้เข้าชมกระจายอยู่หลายประเทศ การเพิ่ม CDN มักคุ้มค่า
CDN แคชข้อมูลของแอปและหน้าที่ต้องล็อกอินได้ไหม
CDN แคชได้ทุกอย่างที่ได้รับอนุญาต จึงต้องตั้งค่าอย่างระมัดระวัง ไฟล์สาธารณะ เช่น รูปภาพ สคริปต์ และสไตล์ เหมาะที่สุด ส่วนเนื้อหาส่วนตัวหรือหน้าที่ต้องล็อกอินโดยทั่วไปไม่ควรถูกแคชใน CDN ที่ใช้ร่วมกัน ไม่เช่นนั้นผู้ใช้คนหนึ่งอาจเห็นข้อมูลของอีกคนได้