เหตุใดฉันจึงควรใช้ CDN ของ Google สำหรับ jQuery


169

สิ่งนี้อาจเห็นได้ชัดเจน แต่ฉันสงสัยว่า: ทำไมฉันต้องพึ่งพาเซิร์ฟเวอร์ของ Googleเพื่อโฮสต์ jQuery สำหรับเว็บไซต์ของฉัน

เป็นเพราะมันโหลดเร็วกว่าแบบนี้เหรอ?


1
ที่เกี่ยวข้อง: stackoverflow.com/questions/547384/…
Jørn Schou-Rode

2
ไม่มีใครพูดถึงนโยบายของ Google เกี่ยวกับการเชื่อมโยงไปยังไฟล์ JS ของพวกเขา (โดยปกติแล้วการเชื่อมโยงที่ได้รับมักจะขมวดคิ้ว) ดังนั้น URL ที่ Google กล่าวถึงนี่เป็นสิ่งที่ตกลงและอื่น ๆ เกี่ยวกับห้องสมุดที่โฮสต์: code.google.com/apis/ajaxlibs/ document / index.html
Loftx


1
ผู้ใช้หลายคนได้ดาวน์โหลด jQuery จาก Google หรือ Microsoft เมื่อเยี่ยมชมเว็บไซต์อื่น ดังนั้นมันจะถูกโหลดจากแคชเมื่อพวกเขาเข้าชมไซต์ของคุณซึ่งจะทำให้เวลาโหลดเร็วขึ้น
AminM

คุณไม่ควรใช้ Microsoft หรือ Google ใช้ MaxCDN มีโอกาสมากขึ้นที่จะได้รับผลกระทบจากแคชซึ่งเป็นสิ่งสำคัญที่สุดที่นี่blog.jquery.com/2014/01/14/…
0fnt

คำตอบ:


393

นี้เป็นเพราะ:

  1. มันเพิ่มความเท่าเทียมที่มี
    (เบราว์เซอร์ส่วนใหญ่จะดาวน์โหลด 3 หรือ 4 ไฟล์ในแต่ละครั้งจากเว็บไซต์ที่กำหนด)

  2. มันเพิ่มโอกาสที่จะมีการเข้าชมแคช
    (เนื่องจากไซต์อื่น ๆ ปฏิบัติตามแนวทางนี้ผู้ใช้ก็จะมีไฟล์พร้อมอยู่แล้ว)

  3. มันช่วยให้มั่นใจว่าน้ำหนักบรรทุกจะเล็กที่สุดเท่าที่จะทำได้
    (Google สามารถบีบอัดไฟล์ล่วงหน้าในรูปแบบที่หลากหลาย (เช่น GZIP หรือ DEFLATE) ซึ่งทำให้เวลาในการดาวน์โหลดมีขนาดเล็กมากเนื่องจากมีการบีบอัดขนาดใหญ่และไม่บีบอัดได้ทันที)

  4. มันลดปริมาณแบนด์วิดท์ที่เซิร์ฟเวอร์ของคุณใช้
    (โดยทั่วไป Google ให้บริการแบนด์วิดธ์ฟรี)

  5. ช่วยให้มั่นใจว่าผู้ใช้จะได้รับการตอบสนองทางภูมิศาสตร์อย่างใกล้ชิด
    (Google มีเซิร์ฟเวอร์ทั่วโลกลดเวลาแฝงเพิ่มเติม)

  6. (ไม่บังคับ) พวกเขาจะอัปเดตสคริปต์ของคุณโดยอัตโนมัติ
    (หากคุณต้องการ "ลอยตัวไปตามที่นั่งกางเกงของคุณ" คุณสามารถใช้สคริปต์เวอร์ชันล่าสุดที่พวกเขานำเสนอได้สิ่งเหล่านี้สามารถแก้ไขช่องโหว่ด้านความปลอดภัยได้

10
ฉันชอบที่คุณมาด้วยเหตุผลมากขึ้นเรื่อย ๆ +1 สำหรับสิ่งนั้น
Matchu

6. เซิร์ฟเวอร์ของ Google อาจเร็วกว่าของคุณ! ฉันไม่แน่ใจว่าประเด็นที่ 3 มีความเกี่ยวข้องจริงๆเพราะทุกคนสามารถลดขนาดได้เช่นเดียวกับ google +1 เพื่อคำตอบที่ดี :)
Paul Creasey

1
ฉันรู้สึกว่า # 3 น่าจะเกี่ยวข้องกับ gzip และสิ่งที่คล้ายกันมากกว่านี้เนื่องจาก jQuery ได้ให้รุ่นย่อขนาดแล้ว
Matchu

2
พระเจ้าทุกคนโจมตีฉันฉันเพียงแค่ส่งความคิดของฉันและเป็นที่ยอมรับฮ่า ๆ
Farshad

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

58

มีหลายสถานการณ์เมื่อคุณอาจไม่ต้องการใช้ jQuery จาก CDN ของ Google:

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

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

  3. เมื่อคุณจำเป็นต้องปรับแต่ง ตัวอย่างเช่นหากคุณใช้Gruntในการสร้างห้องสมุดเพื่อใช้เฉพาะบางโมดูลหรือการตั้งค่าชื่อ AMD

  4. เมื่อคุณให้บริการหน้าเว็บผ่าน SSL ที่ต้องใช้ jQuery คุณควรให้บริการ JavaScript ผ่าน SSL รวมถึงหน้าของคุณเพื่อหลีกเลี่ยงปัญหาด้านความปลอดภัยและคำเตือน

นอกจากนี้Microsoft โฮสต์ jQueryใน CDN นั่นเป็นอีกทางเลือกหนึ่งที่เทียบได้กับการใช้ jQuery ที่โฮสต์


35
เพียงแค่ FYI ที่คุณสามารถใช้เซิร์ฟเวอร์ของ Google เพื่อแสดงเวอร์ชัน JavaScript ของไลบรารีจาวาสคริปต์ที่โฮสต์ ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js ใช้งานได้
Aaron Wagner

เป็นการดีที่จะรู้ว่าแอรอน ขอบคุณ
แลนซ์ฟิชเชอร์

3
+1 สำหรับการกล่าวถึง Microsoft Google ได้รับทางเครดิตมากเกินไป IMO
ใช่แบร์รี่

7
ยัง FYI: โครงการเชื่อมโยงหลายมิติที่เกี่ยวข้องเช่น src="//ajax.googleapis.com/..."งาน
John Gietzen

3
และพิจารณา cndjs ด้วย
Bryce

29

นี้การศึกษาโดยTJ VanTollเชื่อฉันว่ามันจะดีกว่าที่จะเชื่อม jQuery กับสคริปต์อื่น ๆ มากกว่าการโหลดจาก CDN

เหตุผลคือความล่าช้าในการดึงข้อมูล jQuery บนอุปกรณ์มือถือ:

"ในปี 2012 เวลา RTT เฉลี่ยในเครือข่ายมือถือในสหรัฐอเมริกาคือ 344 มิลลิวินาทีและ 344 มิลลิวินาทีนั้นใช้กับการร้องขอ HTTP ทุกครั้งเท่านั้นซึ่งตอนนี้หน้าเว็บเฉลี่ยสร้าง 93 แห่ง - แต่ยังรวมถึงการค้นหา DNS และการเชื่อมต่อ TCP ทั้งหมด ... ในขณะที่ค่าเฉลี่ยของ RTT กำลังดีขึ้นมีเพียงเล็กน้อยที่จะได้รับเพิ่มเติมเนื่องจากเครือข่ายปัจจุบันอยู่ภายในปัจจัยเล็ก ๆ ของข้อ จำกัด ทางทฤษฎีที่กำหนดโดยฟิสิกส์ "

เขายังอ้างถึงโพสต์นี้จาก Steve Souders ซึ่งแสดงว่าทำไมคุณไม่น่าจะได้รับประโยชน์จากการใช้ CDN:

"เนื่องจากการกระจายตัวของผู้ให้บริการ CDN, รุ่น jQuery และการใช้โพรโทคอล (http เทียบกับ https) โอกาสที่จะได้รับการโจมตีจากแคช CDN นั้นต่ำมากและการดาวน์โหลดจากโดเมนภายนอกมีศักยภาพในการดำเนินการไม่ได้ ไปกลับ (การค้นหา DNS การเชื่อมต่อ TCP และ HTTP GET) "


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

13

ประโยชน์ที่ยิ่งใหญ่ที่สุดคือจากการแคช ทฤษฎีคือถ้าผู้เยี่ยมชมเว็บไซต์ที่โหลดไลบรารี JavaScript ของพวกเขาพูด jQuery เช่นจาก Google CDN จากนั้นเมื่อพวกเขาเยี่ยมชมเว็บไซต์ของคุณห้องสมุดอยู่ในแคชเบราว์เซอร์ของผู้ใช้และจะไม่ต้องดาวน์โหลดอีกครั้ง . ฟังดูดีในทางทฤษฎี

ประโยชน์ที่ได้รับการแบ่งปันที่นี่และที่อื่น ๆ ล้วนเป็นทฤษฎี เพิ่งเจอการวิเคราะห์เชิงลึกของการใช้ CDN และหากมันให้ผลประโยชน์ที่คาดหวัง http://www.root777.com/appdev/does-using-google-libraries-api-cdn-give-you-performance-benefits


คำตอบนี้มีการประเมินค่าต่ำเกินไป จะให้ "cons" ที่ถูกต้องเท่าเทียมกันกับคำตอบที่ยอมรับ "pro" ข้างต้น
โทมัสวนา

@ user239558 ลิงก์จะไม่ตายถ้าผู้เขียนการศึกษาใช้ CDN ;-) ข้อผิดพลาดคือ: [function.require]: ไม่สามารถเปิดสตรีม: ไม่มีไฟล์หรือไดเรกทอรีใน / homepages / 41 / d222999437 /htdocs/wp-content/themes/prose/functions.php
jplandrain

บทความไม่ได้คิดออกมาดี มันบอกว่า libq jQuery ที่พบน้อยที่สุดนั้นให้บริการโดย Google CDN ในประมาณ 0.5% ของทุกหน้า ในระหว่างเซสชันการเรียกดูทั่วไปฉันเข้าเยี่ยมชมหน้าต่างๆมากมายโดยเฉพาะลิงก์เล็ก ๆ ที่เชื่อมโยงไปยังไซต์เช่นหน้าเว็บที่โฮสต์ หรือบล็อกเว็บไซต์ ฉันเยี่ยมชมเว็บไซต์ที่ไม่ซ้ำกัน 30 แห่งต่อวันหลังจากหนึ่งสัปดาห์โอกาสที่จะไม่มีแคชนั้นจะค่อนข้างบาง แม้ว่าอาจไม่ถูกแคชสำหรับผู้ใช้ทั้งหมดของคุณ แต่ผู้ที่ใช้อินเทอร์เน็ตอย่างกว้างขวางนั้นจะถูกแคชไว้เสมอเนื่องจากพวกเขาเข้าชมโดเมนที่ไม่ซ้ำกันมากกว่า 1 โดเมน
Aidiakapi

8

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


ฉันไม่เห็นด้วย @tmthydvnprt คำถามนั้นได้รับการให้ความเห็นดังนั้นจึงเป็นจุดเริ่มต้นของความผิดส่วนใหญ่ แต่สิ่งนี้จะตอบคำถามได้
ลา StackExchange

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

0

บางคำตอบที่ดีเกี่ยวกับ "ทำไมคุณควร ... " และ "ทำไมคุณไม่ควร ... "

ฉันเพียงต้องการเพิ่มรายการทางเลือกให้กับ Google หากคุณไม่ต้องการโหลด jQuery จาก CDN

แต่โดยรวมแล้วคุณจะปรับปรุงเว็บไซต์ / แอปพลิเคชั่นโดยรวม


0

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

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