CDN ยังใช้งานได้แม้ในขณะที่เซิร์ฟเวอร์ของฉันหยุดทำงานหรือไม่


10

ฉันเป็นเจ้าของเว็บไซต์วางแผนที่จะใช้ S3 cloudfront ของ Amazon ฉันได้อ่านทุกอย่างเกี่ยวกับสิ่งที่ CDN สามารถทำได้ แต่ฉันยังมีคำถามที่ยังไม่ได้ตอบ

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


3
คุณอาจต้องการพิจารณา CloudFlare ซึ่งเป็น a) ฟรีและ b) สามารถทำให้หน้าเว็บคงที่ของคุณในระหว่างที่ไฟดับ
ceejayoz

คำตอบ:


12

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

หมายเหตุด้าน CDN ไม่ใช่สำหรับโฮสต์เว็บไซต์ทั้งหมดของคุณ ดังนั้นหากคุณคิดว่าคุณสามารถใช้แทนเว็บโฮสติ้งหรือใช้เป็นแผนจัดการความล้มเหลวบางประเภทคุณกำลังเห่าต้นไม้ผิด

TL; DR - คุณจะต้องถามผู้ให้บริการ CDN ของคุณ


10

CDN's ได้รับการออกแบบมาเพื่อขยายขีดความสามารถและประสิทธิภาพ แต่ไม่สามารถใช้งานได้ในระดับสูง เมื่อถึงเวลาใดก็ตามพวกเขาอาจต้องการการเข้าถึงไฟล์ต้นฉบับ

คนส่วนใหญ่ใช้เพื่อจัดเก็บไฟล์คงที่เช่นไฟล์รูปภาพ, ไฟล์ css และ javascript บางอย่างสามารถกำหนดค่าให้แคช HTML แต่ก็ต่อเมื่อคุณมีเว็บไซต์แบบคงที่เท่านั้น หากเป็นเช่นนั้นคุณสามารถโฮสต์สิ่งทั้งหมดบน S3 และไม่ต้องการเซิร์ฟเวอร์เลย


5

โดยทั่วไปใช่ถึง TTL

เมื่อใช้ CDN คุณมักจะกำหนดค่า TTL (เวลาสด) สำหรับเนื้อหาของคุณ นี่คือจำนวนสูงสุดที่แคชจะได้รับก่อนที่จะตัดสินใจว่าจะต้องรีเฟรชแคชด้วยเนื้อหาล่าสุด ตัวอย่างเช่นสมมติว่าคุณกำหนดค่า * .jpg URL ทั้งหมดให้มี TTL 5 นาที

จากนั้นหากเซิร์ฟเวอร์ของคุณหยุดทำงานคุณมีเวลาอีก 5 นาทีในการนำขึ้นสำรองข้อมูลก่อนที่ผู้ใช้จะสังเกตเห็น อย่างน้อยสำหรับ. jpgs อย่างน้อยสำหรับ. jpgs ที่เกิดขึ้นจะได้รับแคชล่วงหน้า

นอกจากนี้ CDN บางตัวยังใช้คุณสมบัติเช่น Akamai NetStorage ซึ่งคุณสามารถอัปโหลดเนื้อหาไปยัง CDN ได้โดยตรง - CDN ได้รับเนื้อหาบางส่วนและบอกให้ให้บริการโดยตรงก่อน เนื่องจากไม่เคยมีการแคชลักษณะ "ตามคำขอ" "ดึง" ที่เกิดขึ้นที่นี่เพื่อเริ่มต้นด้วยแน่นอนว่าควรทำงานเมื่อเซิร์ฟเวอร์ของคุณหยุดทำงาน

ดังที่ผู้โพสต์คนอื่น ๆ ระบุไว้ แต่นี่ไม่ใช่สิ่งที่ CDN ได้รับการออกแบบมาและพวกเขาไม่รับประกันว่าพฤติกรรมนี้จะทำงาน มันเกิดขึ้นได้ตามปกติ (และมันยอดเยี่ยมเมื่อคุณดูมันเกิดขึ้น!) และแน่นอนสำหรับรายละเอียดทางเทคนิคที่เฉพาะเจาะจงคุณต้องติดต่อผู้ให้บริการของคุณ


5

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

  1. วัตถุที่ได้รับการกำหนดค่าสำหรับการแคช (ส่วนใหญ่โดยการตั้งค่าCache-Controlส่วนหัว) ควรจะพร้อมใช้งานจนกว่าจะหมดอายุ CDN บางตัวเสนอความสามารถสำหรับเซิร์ฟเวอร์ Edge CDN เพื่อดึงเนื้อหาจากเซิร์ฟเวอร์ CDN อื่น ๆ ซึ่งสามารถช่วยในระหว่างการหยุดทำงานเช่นเดียวกับการปรับปรุงประสิทธิภาพโดยทั่วไปเมื่อเซิร์ฟเวอร์ต้นทางของคุณมีเวลาแฝงค่อนข้างสูงเมื่อเทียบกับเซิร์ฟเวอร์ CDN

  2. CDN บางตัวเสนอความสามารถในการแสดงเนื้อหาที่หมดอายุเมื่อเซิร์ฟเวอร์แบ็กเอนด์ของคุณไม่สามารถใช้งานได้ (เช่นเมื่อคุณเปิดใช้งานโหมดผ่อนผันหรือโหมดนักบุญของ Varnish อย่างรวดเร็ว) เห็นได้ชัดว่าสิ่งนี้จะไม่ช่วยเนื้อหาที่ไม่เคยแคช แต่อย่างน้อยก็สามารถทำให้หน้าหลักหลักของคุณข้อมูลติดต่อ ฯลฯ ออนไลน์ขณะที่คุณทำงานเพื่อให้เซิร์ฟเวอร์ของคุณกลับมาออนไลน์

  3. CDN ส่วนใหญ่เสนอความสามารถในการลองเซิร์ฟเวอร์หลายแบ็กเอนด์เพื่อให้คุณมีไซต์ failover แยกต่างหากให้ประสบการณ์ที่เหมาะสมสำหรับไซต์ของคุณ: failover ไปยังเซิร์ฟเวอร์อื่นหรือไซต์ลดฟังก์ชันการทำงานหน้า HTML แบบคงที่ ฯลฯ ซึ่งมีประโยชน์สำหรับภัยพิบัติ การโฮสต์ล้มเหลวเนื่องจากคุณมีตัวเลือกในการโฮสต์กับ บริษัท ที่แตกต่างกันโดยสิ้นเชิงหรือในกรณีของ Akamai NetStorage โดยตรงกับผู้ให้บริการ CDN ดังนั้นพวกเขาจะสนับสนุนกองซ้อนทั้งหมด

ด้วยข้อยกเว้นของตัวเลือกที่สามคุณจะไม่สามารถควบคุมสิ่งที่จะถูกแคชบนเซิร์ฟเวอร์ CDN ดังนั้นส่วนที่สำคัญที่สุดของกระบวนการตัดสินใจว่าเว็บไซต์ของคุณสามารถลดระดับลงได้อย่างไรหากคุณสมบัติต่าง ๆ ไม่พร้อมใช้งาน: ตัวอย่างเช่นถ้าคุณมี เนื้อหา HTML ที่สมเหตุสมผลแม้ว่า JavaScript จะล้มเหลวโดยสิ้นเชิงเว็บไซต์ที่ขับเคลื่อนด้วยข้อมูลส่วนใหญ่อาจจะสามารถทำงานได้ด้วยเนื้อหาของหน้าเว็บพื้นฐานเท่านั้นแม้ว่าคุณสมบัติขั้นสูงจะล้มเหลวอย่างเงียบ ๆ ในพื้นหลัง


สรุปยอดเยี่ยม! Akamai มีServe stale if unable to validateตัวเลือกเพื่อให้เมื่อแหล่งกำเนิดลดลงจะให้บริการเนื้อหาแม้จะถึง TTL
LeOn - Han Li

@Leonli จุดที่สองอาจใช้ลิงก์ไปยัง RFC 5861 เนื่องจากฉันเชื่อว่า CloudFlare ก็รองรับCache-Control: stale-if-errorเช่นกัน
Chris Adams

2

CDN ส่วนใหญ่เป็นเนื้อหาแคช (ไดนามิก) เป็นระยะเวลา (TTL) จากจุดเริ่มต้นในกรณีนี้เซิร์ฟเวอร์ของคุณ ในคอนโซลการจัดการ Cloudfront ของ Amazon การอธิบายการควบคุมแคชของ S3 bucket

  1. พฤติกรรมเริ่มต้นของ S3 ของ Amazon คือการแคชวัตถุ 24 ชั่วโมง

  2. คุณสามารถมีอิทธิพลต่อพฤติกรรมเริ่มต้นโดยการจัดหา / เขียนส่วนหัวควบคุมแคชบนเซิร์ฟเวอร์ต้นทางของคุณหรือส่วนหัวหมดอายุ

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

    • เมื่อคุณใช้ส่วนหัว Expires สำหรับวัตถุ Amazon จะไม่ติดต่อเซิร์ฟเวอร์ต้นทางของคุณจนกว่าจะถึงวันนั้น

ฉันหวังว่าสิ่งนี้จะชี้แจงพฤติกรรมของอเมซอน


0

ฉันเป็นวิศวกรฝ่ายสนับสนุนที่ CDN มานานกว่าหนึ่งปีและฉันจะพูดคำตอบทั้งหมดที่นี่ยอดเยี่ยม แต่ IMO @ Chris-Adams มีคำตอบที่ดีที่สุด (ถ้าฉันสามารถลงคะแนนได้ฉันจะ)

สิ่งหนึ่งที่ลูกค้าของเราทำคือชี้ www ไปที่ CDN และ 301 the TLD ไปที่ www หากวัตถุ TTL หมดอายุขอบจะแสดงเนื้อหาที่หมดอายุหากมีอยู่ในแคช

ด้วยที่กล่าวว่าถ้า uptime (และเนื้อหาสด) เป็นสิ่งสำคัญสำหรับคุณแล้วฉันจะพิจารณาย้ายต้นกำเนิดของคุณ (ความเจ็บปวดในก้นฉันรู้) ไปยังโฮสต์ที่ไม่พบไฟฟ้าดับบ่อย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.