ควรใช้ Github เป็น CDN สำหรับไลบรารี javascript หรือไม่ [ปิด]


95

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

แต่จาวาสคริปต์ CDN ที่เป็นที่นิยม (Google, Microsoft, อื่น ๆ ?) จะโฮสต์ไฟล์เพียงเล็กน้อยเท่านั้น สำหรับคนอื่น ๆ เรามีทางเลือกในการโฮสต์พวกเขาเองหรือ ... โดยใช้เซิร์ฟเวอร์ควบคุมต้นทางเป็น CDN ชนิดหนึ่ง Github หรือสิ่งที่คล้ายกันนั้นไม่น่าจะมีแคชของไฟล์ที่กระจายทางภูมิศาสตร์ซึ่งเหมาะสำหรับการให้บริการทั่วโลก แต่ถ้าเป็นเรื่องธรรมดาก็มีโอกาสดีที่เบราว์เซอร์ของผู้ใช้จะแคชไว้ ข้อโต้แย้งของการปิดการโหลดงานจากเซิร์ฟเวอร์ของเราไปยัง github จะใช้ได้ก็ต่อเมื่อ Github เต็มใจที่จะอาสาทำ

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


5
จะเกิดอะไรขึ้นถ้าผู้เขียนจัดโครงสร้างไฟล์ใหม่ ไม่ใช่รหัสปัญหาของเขาในหลายร้อยเว็บไซต์ที่แตก
Raynos

2
@Raynos หากคุณเป็น "ผู้เขียน" ของ repo GitHub คุณจะควบคุมการเปลี่ยนแปลงได้
Chris Jacob

2
@ChrisJacob นั่นคือประเด็น ถ้าฉันเปลี่ยนโครงสร้างไฟล์ของตัวเองมันไม่ใช่ปัญหาของฉันที่คุณจะชี้ไปที่โค้ดส่วนหนึ่งที่ไม่มีอยู่แล้ว
Raynos

5
คุณสามารถใช้rawgithub.comเพื่อแชร์ HTML, JavaScript หรือ CSS ที่กำลังดำเนินการอยู่กับผู้อื่นเพื่อสาธิตอย่างรวดเร็วหรืออาจจะใช้ในการทดสอบ jsPerf
Giovanni Cappellotto

คำถามควรเปิดใหม่เนื่องจากมีคำตอบที่ถูกต้องในความคิดเห็นด้านบนจาก @GiovanniCappellotto
Supersharp

คำตอบ:


94

คุณไม่ควรทำเช่นนั้นกับไฟล์ JavaScript หากคุณสนใจเกี่ยวกับประสิทธิภาพหรือความเข้ากันได้ของ IE9

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

ปัญหาอีกประการหนึ่งคือ GitHub ไม่ให้บริการไฟล์ "raw" ที่มีส่วนหัวประเภทเนื้อหาที่ตรงกับประเภท MIME จริงของไฟล์ ใน IE9 (และอาจเป็นเบราว์เซอร์ / พร็อกซี / ไฟร์วอลล์ / ฯลฯ ) ไฟล์ JavaScript ที่ไม่ได้แสดงด้วยประเภทเนื้อหาที่ถูกต้องจะถูกบล็อกโดยค่าเริ่มต้น คุณสามารถดูได้ในหน้าสาธิต BlockUI เช่น:

ป้อนคำอธิบายภาพที่นี่


10
นอกจากนี้ ... "เมื่อคุณขอไฟล์ดิบแบบนั้นคุณจะไม่ได้เข้าถึงไฟล์โดยตรงจากระบบไฟล์! คุณกำลังใช้รหัสแอปพลิเคชันหลายชั้นด้วยซึ่งจะทำให้ไซต์ของคุณช้าลงอย่างแน่นอนอย่าทำอย่างนั้น . ให้สร้างสาขา gh-pages แทนและโหลดจากที่นั่น "- viatropos.com/blog/github-as-a-cdn
Chris Jacob

RawGit ให้บริการไฟล์ดิบโดยตรงจาก GitHub พร้อมส่วนหัว Content-Type ที่เหมาะสม ใช้แท็กเฉพาะหรือคอมมิตแฮชใน URL (ไม่ใช่สาขา) ไฟล์จะถูกแคชอย่างถาวรตาม URL rawgit.com
Kerem Baydoğan

17

เชื่อมโยงไปยังไฟล์ GitHub "ดิบ" มีปัญหาบางอย่างที่ระบุไว้โดยคำตอบที่เดฟวอร์ด

ฉันขอแนะนำให้คุณดู GitHub Pages เป็นตัวเลือก

อ่านบทความนี้:
GitHub เป็น CDN แคช Javascripts, Stylesheets และ Web Assets ของคุณด้วยเพจ GitHub


11

สิ่งนี้เพิ่งถูกถามในฟอรัมการสนับสนุนของ githubและคำตอบอย่างเป็นทางการก็คือมันโอเค

ต้องบอกว่าฉันเห็นด้วยกับคำตอบอื่น ๆ : github ไม่เคยหมายถึง CDN ในขณะที่ Google และ Microsoft มีโครงสร้างพื้นฐานเฉพาะสำหรับสิ่งนั้น


7
เพื่อชี้แจง. การตอบกลับของฟอรัมการสนับสนุนนั้นสัมพันธ์กับบทความที่ฉันลิงก์ไว้ในคำตอบของฉัน (GitHub Pages เป็น CDN ไม่ใช่ไฟล์ "raw" ของ GitHub): stackoverflow.com/questions/5502540/… )
Chris Jacob

10

เป็นเรื่องปกติสำหรับการสร้างต้นแบบ / ของใช้ส่วนตัว แต่สำหรับการผลิตฉันจะดู:

http://www.cdnjs.com/

http://cachedcommons.org/ - ไม่มีให้บริการแล้ว


ฉันหวังว่าคุณจะรู้ว่า CachedCommons.com ให้บริการจาก github.com
ocodo

แต่ดูเหมือนว่า URL จะชี้ไปที่ CachedCommons cachedcommons.org/cache/mootools/1.2.4/javascripts/mootools.jsอาจเป็นพร็อกซีที่ฉันเดา
meleyal

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

2
ดูเหมือนว่าการเชื่อมโยงกับ Github จะไม่ใช่ตัวเลือกในเร็ว ๆ นี้: github.com/blog/…
meleyal

1
จริงๆแล้วนั่นไม่ใช่ปัญหาหากคุณจะใช้ทรัพยากรที่ใช้ GitHub เป็น cdn เพียงตรวจสอบให้แน่ใจว่าโฮสต์เป็นส่วนหนึ่งของไซต์หน้าคงที่ (ปัจจุบันคือ GitHub.io) - นั่นคือวิธีที่คุณควรทำใน ที่หนึ่งข้างทาง
ocodo

-2

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

แต่ถึงกระนั้น - Google & MS ยังปกครองพื้นที่สำหรับ jQuery & jQuery Templates - ดังนั้นฉันจึงใช้มันสำหรับสิ่งนั้น

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