ควรเพิ่มความเร็วในการโหลด AWS CloudFront * สำหรับไฟล์ที่เข้าถึงไม่บ่อยหรือไม่?


9

ฉันยังใหม่กับ CDN และทดลองใช้กับ CloudFront ฉันได้ตั้งค่าทุกอย่างแล้วและดูเหมือนว่าจะทำงานได้ดี ฉันสามารถสร้างภาพคงที่ในหน้าหนึ่งและเข้าถึงผ่านการกระจาย CloudFront ของฉัน ฉันใช้ต้นกำเนิดที่กำหนดเอง (ไม่ใช่ที่ฝากข้อมูล s3)

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

ดังนั้นฉันจะเห็นว่าในหน้ายอดนิยมในเว็บไซต์ของเราที่ถูกตีตลอดเวลานี้จะเป็นประโยชน์ และฉันควรคาดหวังผลประโยชน์เพราะฉันอยู่ในซีแอตเทิล (ใกล้กับ Amazon) และเซิร์ฟเวอร์ของฉันอยู่ใน CA

ประเด็นก็คือถ้าฉันออกจากหน้านี้ไปสักครู่แล้วโหลดใหม่สิ่งต่าง ๆ กลับไปเป็นรูปสี่เหลี่ยมจัตุรัสโดยที่ CloudFront แย่กว่าเซิร์ฟเวอร์ต้นทาง คาดหวังหรือไม่ สิ่งที่เลื่อนออกจาก "แคช" CDN อย่างรวดเร็วหรือไม่

เป็นไปได้หรือไม่ว่ามีบางอย่างในการตั้งค่าของฉันกำลังส่งผลต่อประสิทธิภาพการทำงาน หรือความจริงที่ว่า CDN จะเป็นผลบวกต่อเนื้อหาที่มีการเข้าถึงโดยเฉลี่ยทุกสองสามวินาที?

(ไขว้โพสต์จากฟอรั่ม AWS เพราะฉันถูกทำให้เสียไปตลอดกาลด้วยเวลาตอบสนองดังนั้น

UPDATE:

มีสองคำตอบที่ดีด้านล่างที่ควรพิจารณาหากคุณมีคำถามเกี่ยวกับประสิทธิภาพของ CloudFront ฉันเพิ่งพบคำอธิบายสำหรับปัญหาเฉพาะของฉันไม่ได้กล่าวถึง ฉันทิ้ง TTL ไว้ที่ 5 นาทีในฐานะผู้ดูแล เนื่องจากฉันยังใช้ต้นกำเนิดที่กำหนดเองจึงมีการเดินทางไปกลับเพิ่มเติมไปยังเนมเซิร์ฟเวอร์ที่เชื่อถือได้เพื่อแก้ไขปัญหาดังกล่าวกับโดเมน Amazon CloudFront จริง ขณะนี้การตั้งค่า TTL กลับไปที่ 12 ชั่วโมงดูเหมือนว่าโหลดที่เกิดขึ้นนานจะไม่ค่อยเกิดขึ้น


ใช่เป็นไปได้ที่ CloudFront จะช้ากว่าการไปที่เซิร์ฟเวอร์โดยตรงอย่างรวดเร็วเพราะ CloudFront เป็นหนึ่งใน CDNs ที่ช้าที่สุดที่นั่นเนื่องจากวิธีที่ Amazon นำมาใช้กับการแก้ปัญหา DNS หลายเลเยอร์ ฯลฯ เรียกใช้เกณฑ์มาตรฐานบางอย่างจาก differnet สถานที่ต่างๆทั่วโลกและตัดสินใจว่าเหมาะกับคุณหรือไม่ - ใช้webpagetest.orgสำหรับการทดสอบ
Jesper M

คำตอบ:


5

Cloudfront ตั้งส่วนหัวในการตอบกลับเช่น "X-Cache: Hit from cloudfront" ในการตอบกลับ สมมุติว่ามันจะพูดว่า "Miss" หากไฟล์ของคุณไม่ได้อยู่ในแคชของโหนดที่คุณถูกนำทาง

อาจเป็นไปได้ว่าไฟล์ของคุณไม่ได้รับความนิยมมากพอดังนั้นพวกเขาจึงถูกไล่ออกจากแคชของ CloudFront ด้วยเนื้อหาที่ได้รับความนิยมมากกว่าแม้ว่าจะไม่ผ่านไป 24 ชั่วโมง อาจเป็นไปได้ว่าการโอเวอร์โหลด IO หรือสถานการณ์อื่น ๆ ภายในโหนด CloudFront เฉพาะทำให้การเข้าถึงช้าลง Cloudfront นั้นราคาไม่แพงมากเมื่อเทียบกับ Akamai หรือ LimeLight ประสิทธิภาพการทำงานที่แย่ที่สุดและการรับประกันระดับการบริการเป็นสองเหตุผลในการใช้ผู้เล่นที่มีราคาแพงกว่า

ฉันจะทำการทดสอบโดยใส่ไฟล์ยอดนิยมเพียงไฟล์เดียวลงใน cloudfront ในการผลิตและจากนั้นใช้การทดสอบเป็นระยะเพื่อดูว่า CloudFront แสดงการเปิดดู (หรือบันทึกเวลาการทำธุรกรรมทั้งหมดด้วย)


ฉันได้อัปเดตคำถามพร้อมคำอธิบายที่เป็นไปได้อื่น ๆ สำหรับปัญหา perf ที่ฉันเห็นซึ่งเป็นว่าฉันออกจากการตั้งค่า TTL ที่การตั้งค่าต่ำ 5 นาที แต่เมื่อเปลี่ยนกลับเป็น 12 ชั่วโมงฉันไม่คิดว่าฉันเห็นสิ่งเหล่านี้ ปัญหาที่มักเกิดขึ้นบ่อยครั้ง
เกร็ก

7

มันเป็นไปได้. อย่างไรก็ตามจุดประสงค์หนึ่งของ CDN คือความยืดหยุ่น คุณสามารถคาดหวังว่า CDN จะทำงานแบบเดียวกันหากคุณเข้าชม 100 ครั้งในคราวเดียวหรือ 1 ล้านครั้ง

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

หวังว่าจะช่วย


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

Greg - ฉันไม่เห็นการโต้แย้งสำหรับการยกเว้นเนื้อหานอกจากเหตุผลทางการเงิน อย่างไรก็ตามคุณสามารถควบคุมส่วนหัวแคชของวัตถุของคุณใน Amazon ได้ คุณอาจลองดูสิ่งนี้: stackoverflow.com/questions/269840/…
Jesse Bunch

ซึ่งจะช่วยให้คุณสามารถระบุส่วนหัวในอนาคตอันใกล้ได้เช่นเดียวกับสื่อทั่วไปของเว็บไซต์
Jesse Bunch

ขอบคุณอีกครั้ง. ลิงก์ควบคุมแคชนั้นไม่เกี่ยวข้องกับสถานการณ์ของฉันเพราะฉันใช้เซิร์ฟเวอร์ต้นทางดั้งเดิมไม่ใช่ s3 แต่เงินต้นใช้และฉันมีอนาคตไกลหมดอายุชุดส่วนหัว BTW เอกสารของ Amazon บอกว่าเนื้อหามีชีวิตอยู่ในแคชเป็นเวลา 24 ชั่วโมง แต่การทดลองของฉันบ่งบอกบางสิ่งที่แตกต่าง
เกร็ก

1

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

Amazon คำถามที่พบบ่อยกล่าวว่า: "คิวนานแค่ไหน Amazon CloudFront จะเก็บไฟล์ของฉันในสถานที่ที่ขอบโดยค่าเริ่มต้นถ้าไม่มีหัวการควบคุมแคชมีการตั้งค่าแต่ละการตรวจสอบสถานที่ตั้งขอบสำหรับรุ่นปรับปรุงของไฟล์ของคุณเมื่อใดก็ตามที่ได้รับการร้องขอมากกว่า 24 ชั่วโมงหลังจากครั้งก่อนหน้านี้จะตรวจสอบที่มาของการเปลี่ยนแปลงไฟล์นั้น ๆ ซึ่งเรียกว่า“ ระยะเวลาหมดอายุ” คุณสามารถตั้งค่าระยะเวลาหมดอายุนี้ได้สั้นเพียง 1 ชั่วโมงหรือนานเท่าที่คุณต้องการโดยการตั้งค่าส่วนหัวควบคุมแคชในไฟล์ของคุณในจุดเริ่มต้นของคุณ Amazon CloudFront ใช้ส่วนหัวควบคุมแคชเหล่านี้เพื่อกำหนดความถี่ในการตรวจสอบ จุดเริ่มต้นสำหรับไฟล์เวอร์ชันที่อัปเดตหากไฟล์ของคุณไม่เปลี่ยนบ่อยนักควรตั้งระยะเวลาการหมดอายุที่ยาวนานและใช้ระบบการกำหนดเวอร์ชันเพื่อจัดการอัปเดตไฟล์ของคุณ "

[ฉันถือว่าประโยคสุดท้ายหมายถึง "โชคดีถ้าคุณตั้งไว้ที่ 50 ปีและต้องการเปลี่ยนไฟล์"]

จุดประสงค์หลักของการใช้ CDN นั้นไม่ใช่การโฮสต์เนื้อหาแบบคงที่ใช่หรือไม่ ถ้าเป็นเช่นนั้นจะช่วยให้ใช้งาน TTL ได้นานกว่าหนึ่งวันหรือไม่ สำหรับแทบทุกอย่าง (ทุกรูปภาพและ CSS) ฉันใช้ Cache-Control = "max-age = 604800, สาธารณะ, ต้องตรวจสอบซ้ำ" (เช่น 1 สัปดาห์) จากประสบการณ์ของฉันไฟล์แน่นอนต้องใช้เวลาถึงหนึ่งสัปดาห์ในการเปลี่ยนแปลงหากฉันอัปโหลดเวอร์ชันใหม่สู่ S3

หวังว่านี่จะช่วยได้ [BTW: ในจุดทั่วไปของคุณฉันก็สงสัยว่า CDN จะช่วยให้มีประสิทธิภาพเท่าที่คุณคิดหรือเปล่า ฉันกำลังจะย้ายเว็บไซต์ทั้งหมดของฉัน (รวม CDN) ไปยังเซิร์ฟเวอร์เฉพาะที่รวดเร็วเป็นพิเศษและทำการทดสอบเพื่อค้นหา]


คุณถูกต้องว่าการควบคุมแคชมีผลต่อระยะเวลาที่เนื้อหาถูกเก็บไว้ที่ขอบ TTL เป็นเรื่องแยกต่างหาก TTL ควบคุมการแคชของที่อยู่ IP ที่กำหนดให้กับชื่อโดเมน ดังนั้นไม่ว่าไฟล์คงที่จะถูกแคชที่ขอบหรือไม่เป็นครั้งแรกที่เซิร์ฟเวอร์เห็น URL ของไฟล์ที่มีการค้นหาที่อยู่ IP ของโดเมนนี้ ด้วย TTL 1 วันเป็นไปได้ว่าเซิร์ฟเวอร์ที่อยู่ใกล้เคียงมีข้อมูลนี้ในแคช DNS ด้วย TTL 5 นาทีนี้จะมีโอกาสน้อยมากและการเดินทางรอบที่สมบูรณ์ให้กับเซิร์ฟเวอร์กำเนิดของฉันจะต้อง (ไม่ได้สำหรับไฟล์ แต่จะแก้ปัญหาของ URL) ..
เกร็ก

อ่าขอบคุณ ผมกำลังสับสน DNS TTL และแคชควบคุม :)
คริส W

1

เหตุผลในการใช้ CDN คือถ้าคุณคาดหวัง

  • เนื้อหาแบบคงที่ - การอัปเดตไม่บ่อยครั้งหรือควบคุม
  • ดูได้ทั่วโลก
  • เข้าถึงได้บ่อยครั้ง

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

ยิ่งไปกว่านั้นเราคาดว่าจะมีค่าใช้จ่ายรายเดือน 2.2 $ เมื่อเทียบกับ 7 $ สำหรับเซิร์ฟเวอร์ godaddy (ซึ่งไม่สามารถจัดการกระชากได้)

เวลาในการโหลดหน้าเฉลี่ย

การกระจายเวลาโหลดหน้าเว็บเฉลี่ย

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