โลคัลไฟล์เทียบกับ CDN


14

หากความเร็วในการโหลดเว็บไซต์นั้นเป็นข้อกังวลซึ่งโดยทั่วไปจะใช้งานได้ดีกว่าเมื่ออ้างอิงไฟล์ JavaScript หรือ CSS? การใช้ CDN จะดีกว่าหรือว่าจะเพิ่มคำขอ HTTP เพิ่มเติมอีกหรือไม่

คำตอบ:


12

ควรใช้ CDN สำหรับไฟล์คงที่ทั้งหมด (.css / .js / images)

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

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

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


2
หาก CDN ไม่ใกล้และไม่ใช้ edns-client-subnet มันจะไม่เพิ่มประสิทธิภาพเลย นี่ไม่ใช่ "ผลประโยชน์อื่น" ซึ่งอยู่ใกล้กับไคลเอนต์อาจให้การป้องกัน DOS / การเพิ่มประสิทธิภาพเนื้อหาบางอย่าง (แม้ว่าคุณจะไม่ได้กล่าวถึงสิ่งเหล่านี้) เป็นเพียงผลประโยชน์เท่านั้น
symcbean

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

3

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

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


2

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

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

บ่อยครั้งที่ฉันเห็นคนใช้ CDN เพราะพวกเขาอ่านพวกเขาควรจะใช้อย่างใดอย่างหนึ่งและไม่มีเหตุผลอื่น


ขอบคุณที่ชี้ให้เห็นว่ามันไม่จำเป็นเสมอไปและเพิ่มความยุ่งยากที่ไม่จำเป็น ในกรณีของฉันฉันใช้ cms ที่ใช้ laravel พร้อมตัวรวบรวมสินทรัพย์แบ็คเอนด์และแคชไฟล์ minifed ที่ตั้งค่า S3 cdn, gulp และ vc ในไฟล์ js เพียงไม่กี่ครั้งก็เสียเวลา ฉันควรจะมุ่งเน้นไปที่การแคชฐานข้อมูลและรหัสที่เหมาะสมสำหรับความเร็ว
ราชา Khoury

1

การใช้ CDN อาจเป็นภาระและเป็นประโยชน์ต่อเว็บไซต์ทั้งหมดขึ้นอยู่กับวิธีการนำไปใช้งาน

คะแนนบวก

  1. เนื้อหาแบบคงที่เก็บไว้ใกล้กับผู้ใช้ (เวลาโหลดเร็วขึ้น)
  2. โดเมนย่อยเพิ่มเติม ( cdn1.example.com, cdn2.example.comฯลฯ ) นี้จะช่วยให้มีขีด จำกัด โดยธรรมชาติในเบราว์เซอร์ที่พวกเขา จำกัด การดาวน์โหลดไฟล์เป็นสองไฟล์พร้อมกันจากชื่อโดเมนที่ผ่านการรับรองเต็มรูปแบบเดียวกันได้ตลอดเวลา ในคำอื่น ๆ ที่ใช้ตัวอย่างนี้คุณจะเข้าถึง HTML จากwww.example.comและทั้งหมดในขณะที่กำลังดาวน์โหลด 2 ไฟล์จากcdn1.example.com, 2 ไฟล์จากcdn2.example.com, และ 2 ไฟล์จากที่cdn3.example.comมีโดเมน CDN ทั้งสามที่เข้าถึงบริการ CDN และแหล่งที่มา

คุณสามารถให้การอ้างอิงจากที่ "2 ไฟล์พร้อมกันต่อโดเมน" มาได้หรือไม่? เป็นเบราว์เซอร์ต่อแน่นอน นอกจากนี้การถือกำเนิดของ HTTP / 2 ทำให้โดเมนกลายเป็นประเด็นที่สงสัย
Patrick Mevzek

0

การโฮสต์บน CDN มีข้อเสียมากมาย:

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

เปรียบเทียบกับข้อดีที่ไม่สำคัญ:

  1. โหลดข้อมูลน้อยลง: เราพูดถึงสคริปต์ขนาด 100kb ต่อสคริปต์ รูปภาพ 1 ภาพคุณภาพต่ำมีสัดส่วนมากกว่านั้น หากคุณไม่มีเว็บไซต์ที่มีจำนวนการเข้าชมถึง 5,000,000 ครั้งต่อนาทีมันจะไม่สร้างความแตกต่าง และถ้าคุณควรตั้งค่าสภาพแวดล้อมเซิร์ฟเวอร์ให้ดีขึ้นด้วย load balancer และ webservers มากขึ้นเพราะการใช้ CDNs จะไม่แก้ปัญหาของคุณ
  2. เวลาโหลดเร็วกว่าเนื่องจากเซิร์ฟเวอร์ CDN ใกล้ชิดกับไคลเอนต์: ในเวลาที่เวลาแฝงจาก EU ถึงสหรัฐอเมริกาอยู่ที่ประมาณ 100ms สำหรับการเชื่อมต่อเกือบทั้งหมด css จะโหลดใน 50ms หรือ 100ms

มีเหตุผลเหมือนศูนย์ในการใช้ CDN ในสภาพแวดล้อมการผลิต

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