Microsoft CDN สำหรับ jQuery หรือ Google CDN [ปิด]


187

ไม่สำคัญว่า CDN ใดที่คุณใช้เชื่อมโยงไปยังไฟล์ jquery ของคุณหรือไฟล์ javascript ใด ๆ สำหรับเรื่องนั้น หนึ่งอาจเร็วกว่าอีกหรือไม่ มีปัจจัยอื่นใดที่มีบทบาทในการตัดสินใจใช้ cdn ของคุณ? ฉันรู้ว่า Microsoft, Yahoo และ Google ทุกคนมี CDN's แล้ว

คำตอบ:


151

อัปเดตตามความคิดเห็น:

ฉบับย่อ:มันไม่สำคัญหรอก แต่มันอาจขึ้นอยู่กับสิ่งที่โฮสต์ พวกเขาโฮสต์สิ่งต่าง ๆ ทั้งหมด: Google ไม่ได้โฮสต์ jQuery.Validate, Microsoft ไม่ได้โฮสต์ jQuery-UI, ตั้งแต่ 2016 พวกเขาทำ !!, Microsoft เสนอสคริปต์ของพวกเขาที่จะให้บริการผ่านทางScriptResource.axdและการรวมที่ง่ายขึ้น (เช่นScriptManager กับ ASP สุทธิ 4.0 )

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

โอกาสของการถูกบล็อกดูเหมือนจะเท่ากันเกือบเป็นศูนย์ ฉันทำงานเกี่ยวกับสัญญาที่ไม่เป็นความจริง แต่ดูเหมือนว่าจะเป็นข้อยกเว้น นอกจากนี้เนื่องจากการโพสต์ต้นฉบับของคำตอบนี้บริบทโดยรอบมีการเปลี่ยนแปลงอย่างมาก CDN ของ Microsoft ได้ก้าวหน้าไปมาก

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

CDN ของ Google ที่เราใช้สำหรับ:

CDN ของ Microsoft ที่เราใช้สำหรับ:

เซิร์ฟเวอร์ของเรา:

  • Combined.js? v = 2.2.0.6190 (Major.Minor.Iteration.Changeset)

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

อาร์กิวเมนต์อื่น ๆ ที่ต้องทำคือเวลา DNS มีค่าใช้จ่ายในแง่ของความเร็วในการโหลดหน้า โดยเฉลี่ย:เพียงเพราะมีการใช้งานมากกว่า (ใช้เวลานานกว่า) ajax.googleapis.comน่าจะถูกส่งคืนโดย DNS เร็วกว่าajax.microsoft.comเพราะเซิร์ฟเวอร์ DNS ในพื้นที่มีแนวโน้มที่จะได้รับการร้องขอมากกว่า (นี่เป็นผู้ใช้รายแรกในเขตโทษ) . นี่เป็นสิ่งที่น้อยมากและควรได้รับการพิจารณาว่าประสิทธิภาพมีความสำคัญมากหรือไม่ถึงมิลลิวินาที
(ใช่: ฉันรู้ว่าประเด็นนี้ตรงกันข้ามกับการใช้ CDN ทั้งสองของฉัน แต่ในกรณีของเราเวลา DNS ถูกบดบังด้วยเวลารอคอยในจาวาสคริปต์ / การปิดกั้นที่เกิดขึ้น)

สุดท้ายถ้าคุณไม่ได้มองไปที่มันเป็นหนึ่งในเครื่องมือที่ดีที่สุดออกมีFirebugและบางปลั๊กอินสำหรับมันความเร็วหน้าและYSlow หากคุณใช้ CDN แต่หน้าของคุณกำลังร้องขอภาพทุกครั้งเนื่องจากไม่มีส่วนหัวแคชแสดงว่าคุณไม่มีผลไม้แขวนลอยต่ำ แผง Net ของ Firebug สามารถแบ่งการโหลดหน้าเว็บของคุณได้อย่างรวดเร็วและ Page Speed ​​/ YSlow สามารถให้คำแนะนำที่ดีเพื่อช่วยคุณได้


26
มีโอกาสน้อยที่จะถูกบล็อก? ฉันชอบที่จะรู้ว่าคุณคิดอย่างไร เครือข่าย MS ไม่ใช่ของ MS อยู่ดีมันเป็นของ Akamai ที่ทำเซิร์ฟเวอร์โหลดบาลานซ์มานานกว่า google มากซึ่งทำให้ไร้สาระของ "ระบบการตกที่ดีกว่า" เช่นกัน จริง ๆ ถ้าคุณจะเรียกร้องเช่นนี้หลักฐานบางอย่างจะดี
— blowdart

16
บริษัท บางแห่งและฉันทำงานเพื่อบล็อก * .microsoft.com บางส่วนทันทีเพื่อเป็นส่วนหนึ่งในการบล็อกการอัปเดต windows ถูกต้องหรือไม่ ไม่มันเกิดขึ้นไหม? ใช่. ตัวอย่าง: ajax.microsoft.com/...itอยู่ภายใต้บล็อก * .microsoft.com และไม่อยู่ภายใต้ข้อยกเว้น www จะถูกบล็อกเมื่อ บริษัท เลือกบล็อกทุกอย่างยกเว้น www.microsoft.com ฉันไม่ได้บอกว่ามันเป็นไปได้มากฉันบอกว่ามันเป็นไปได้มากกว่าเพราะฉันไม่เคยเห็น google บล็อก แต่ได้เห็นสิ่งที่ตรงกันข้าม
— Nick Craver

5
และฉันเคยเห็น google ถูกบล็อคให้หยุด gmail ในไซต์ของรัฐบาล แต่เนื่องจากเป็นของหายากฉันจึงแทบไม่ได้พยายามที่จะใช้เป็นข้ออ้างในกรณีนี้
— blowdart

19
เนื่องจากสิ่งนี้ถูกเขียนขึ้น MS ได้เพิ่ม jQuery-UI ลงใน CDN ของพวกเขา: asp.net/ajaxlibrary/cdn.ashx#Using_jQuery_UI_from_the_CDN_10
— Will Dean

3
@Nick Microsoft ได้ย้าย CDN จาก ajax.microsoft.com ไปยัง ajax.aspnetcdn.com ดังนั้นจึงไม่มีโอกาสที่จะปิดกั้น CDN ของ Microsoft เป็นส่วนหนึ่งของการปิดกั้นการปรับปรุง Windows
— Sachin Joseph

88

คุณควรใช้ Google CDN เป็นอย่างยิ่งสำหรับ jQuery (และนี่มาจากผู้พัฒนาที่เป็นศูนย์กลางของ Microsoft)

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


7
ถ้าเราคิดต่อไปอย่างนั้นจะยิ่งใหญ่กว่าเท่านั้น อย่าเพิ่งใช้ google เพราะมันเป็น google และถือว่าทุกคนอยู่กับพวกเขา (ไม่ต้องสงสัยเลยว่าส่วนใหญ่อยู่กับพวกเขา) แต่ปล่อยให้ชนะที่ดีที่สุดเปรียบเทียบผลและไปกับพวกเขา
— mamu

20
มันไม่ใช่ข้อสมมติฐาน ไซต์ใน Alexa ติดอันดับ 200,000 โดยใช้ CDN ของ Google มีจำนวนมากกว่า Microsoft มากกว่า 100: 1 ในแง่ของความนิยมในการแคชจุดเดียวที่เป็นที่โปรดปรานของ MS jQuery CDN คือ Microsoft.com ใช้มันซึ่งทำให้ได้รับการเปิดเผยจำนวนมากจากการอ้างอิงเพียงครั้งเดียว (แต่ไม่มากเท่ากับเว็บไซต์ชั้นนำหลายพันที่อ้างอิง Google )
— เดฟวอร์ด

@DaveWard คุณสามารถตรวจสอบได้ว่ายังคงเป็นกรณีนี้หรือไม่หรือมีการเปิดตารางในช่วงไม่กี่ปีที่ผ่านมา
— snumpy

3
@snumpy: Google CDN ได้ขยายความเป็นผู้นำออกไปเล็กน้อยจากสิ่งที่ฉันเคยเห็น ไม่มีอะไรผิดปกติกับ Microsoft CDN มันเร็วและมีไฟล์ไม่กี่ไฟล์ที่ Google ใช้ไม่ได้ ผลประโยชน์การแคชข้ามไซต์นั้นขึ้นอยู่กับการครอบคลุมทั่วทั้งเครือข่ายและ Google นั้นครองตำแหน่งอื่น ๆ ทั้งหมดในเรื่องนั้น
— Dave Ward

เนื่องจากฉันเปลี่ยนจาก jQuery CDN เป็น Microeoft's เพื่อโฮสต์ jQuery Mobile ฉันจึงย้าย jQuery ดาวน์โหลดอื่น ๆ ของฉันไปที่ Google เพื่อลดจำนวน DNS roundtrips เพียงแค่อีกปัจจัยหนึ่ง :)
— ร็อบแกรนท์

20

Google จะส่ง jQuery เวอร์ชันย่อให้คุณด้วยซอฟต์แวร์ของตัวเองรุ่นนี้จะเบากว่ารุ่น minified มาตรฐานขนาด 6kb ที่ MS ให้บริการ ไปที่ Google


18

สิ่งหนึ่งที่ควรพิจารณาคือทั้งสอง บริษัท มีไลบรารี "พิเศษ" ที่แตกต่างกันเล็กน้อย:

  • Microsoft กำลังเสนอไลบรารีการตรวจสอบความถูกต้อง JQueryใน CDN ของพวกเขาในขณะที่ Google ไม่ได้ ( http://www.asp.net/ajaxlibrary/cdn.ashx )
  • Google กำลังเสนอไลบรารี JQuery UIบน CDN ของพวกเขาในขณะที่ Microsoft ไม่ได้ ( http://code.google.com/apis/ajaxlibs/documentation/ )

สิ่งนี้อาจเกี่ยวข้องกันขึ้นอยู่กับความต้องการของคุณ


23
เนื่องจากสิ่งนี้ถูกเขียนขึ้น MS ได้เพิ่ม jQuery-UI ลงใน CDN ของพวกเขา: asp.net/ajaxlibrary/cdn.ashx#Using_jQuery_UI_from_the_CDN_10
— Will Dean

15

ควรสังเกตว่าเนื่องจาก ajax.microsoft.com เป็นโดเมนย่อยของคำขอ microsoft.com ส่งคุกกี้ microsoft.com ทั้งหมดที่เพิ่มไปยังเวลาโดยรวมที่ใช้ในการรับไฟล์กลับ

นอกจากนี้ ajax.microsoft.com ยังใช้การบีบอัด IIS7 ที่เป็นค่าเริ่มต้นซึ่งด้อยกว่าการบีบอัดมาตรฐานที่เว็บเซิร์ฟเวอร์อื่นใช้

http://ajax.microsoft.com/ajax/jquery/jquery-1.4.4.min.js - 33.4K

http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js - 26.5K

นอกจากนี้ยังมีคนอื่น ๆ ที่กล่าวถึง google CDN เป็นวิธีที่นิยมมากขึ้นซึ่งจะเป็นการเพิ่มโอกาสของไฟล์ที่ถูกแคช

ดังนั้นฉันขอแนะนำให้ใช้ google


3
นี่เป็นข้อคัดค้านที่ดีในขณะนั้น แต่ไม่สามารถใช้งานได้อีกต่อไปเนื่องจากชื่อโดเมน CDN ที่แนะนำคือ ajax.aspnetcdn.com การบล็อกของการคัดค้าน * .microsoft.com ก็ไม่ได้นำมาใช้อีกต่อไป
— สตีเฟ่นเคนเนดี้

นี่เป็นเรื่องจริง ดีใจที่พวกเขาแก้ไขส่วนนี้ในที่สุด ตอนนี้ฉันไม่รู้สึกแย่เกี่ยวกับการรวม jquery validate / cycle plugin จาก ms cdn
— อลิสแตร์

สิ่งที่คุกกี้ใช้ไม่ได้อีกต่อไปเพราะเปลี่ยนเป็น aspnetcdn
— Rob Grant

11

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


7

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

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>    
<script type="text/javascript">
    !window.jQuery && document.write('<script src="/scripts/jquery-1.4.2.min.js"><\/script>')
</script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/jquery-ui.min.js" type="text/javascript"></script>
<script type="text/javascript">
    !window.jQuery.ui && document.write('<script src="/scripts/jquery-ui-1.8.2.min.js"><\/script>')
</script> 

1
น่าเสียดายที่เบราว์เซอร์บางตัว (IE6) จะไม่หน่วงเวลาการประมวลผลของสคริปต์ออนไลน์นั้นจนกว่าหลังจากที่โหลดสคริปต์ src = แล้วจึงไม่ทำงานตามที่คาดไว้ หวังว่ามันจะ!
— Walden Leverich

2
ดังนั้นผู้ใช้ IE6 ของคุณจะได้รับประสบการณ์ที่ช้าเล็กน้อย การแลกเปลี่ยนที่ดีถ้าคุณถามฉัน IE6 กำลังลดลง ... แม้แต่ในอินทราเน็ตขององค์กร
— Armstrongest

7

มันเกี่ยวกับสถิติ: jquery.comโหลด jQuery จาก Google และ Twitter ก็เช่นกัน, Stackoverflow และอื่น ๆ อีกมากมาย ดังนั้นจึงมีความเป็นไปได้สูงมากที่ผู้ใช้เว็บไซต์ของคุณมีแคชอยู่แล้ว = ไม่มีการดาวน์โหลดเลย

ลืม validator, bandwith และ speed เพราะนี่คือข้อดีหลัก ๆ มิฉะนั้นตัวเลือก CDN อื่น ๆ จะทำงานเป็นหลักในระดับเดียวกัน


1
ใช่ แต่ Twitter (ตามencosia.com/2010/09/15/15/15ของ Dave Ward ) ใช้ jQuery 1.3.0 (ใน Twitter "เก่า") ดังนั้นพวกเขาจึงไม่สำคัญ ... จริงๆ ...
— veggerby

เว็บไซต์ที่ฉันทำเมื่อไม่นานมานี้ยังคงใช้ jQuery 1.3.0 เช่น Twitter (เก่า) มันสำคัญเสมอ
— achairapart

6

หนึ่งอาจเร็วกว่าอีกหรือไม่

จริง ๆ แล้วฉันสงสัยตัวเองดังนั้นฉันจึงติดตั้งหน้าทดสอบ jsbin โดยใช้สิ่งต่อไปนี้แล้วเรียกใช้ผ่านเครื่องมือเปรียบเทียบภาพของ webpagetest.org ฉันทดสอบแล้ว:

  1. ajax.googleapis.com
  2. code.jquery.com
  3. ajax.aspnetcdn.com
  4. cdnjs.cloudflare.com

ใครที่เร็วที่สุด: code.jquery.com 0.1 วินาทีในการทดสอบทั้งคู่

ใครที่ช้าที่สุด: ajax.aspnetcdn.com 0.7 วินาทีในการทดสอบครั้งแรกและajax.googleapis.com 1 วินาทีในการทดสอบครั้งที่สอง

นี่คือการทดสอบครั้งแรก ( การทดสอบแต่ละครั้งมี 3 ครั้ง):

วิดีโอ: http://www.webpagetest.org/video/view.php?id=121019_16c5e25eff2937f63cc1714ed1eac814794e62b3

รายงาน: http://www.webpagetest.org/video/compare.php?tests=121019_D2_KF0,121019_9Q_KF1,121019_WW_KF2,121019_9K_KF3

นี่คือการทดสอบครั้งที่ 2 (อีก 3 ครั้ง):

วิดีโอ: http://www.webpagetest.org/video/view.php?id=121019_a7b351f706cad2c25664fee7ef349371f17c4e74

รายงาน: http://www.webpagetest.org/video/compare.php?tests=121019_MP_KJN,121019_S6_KJP,121019_V9_KJQ,121019_VY_KJR


4

ตามที่ระบุไว้โดยPingdom :

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

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

ข้อสังเกตบางประการเกี่ยวกับประสิทธิภาพ: CDN ของ Google นั้นช้าที่สุดทั้งสามในอเมริกาเหนือและยุโรป ในยุโรป CDN ของ Microsoft นั้นเร็วที่สุด


3

ฉันคิดว่ามันขึ้นอยู่กับว่ากลุ่มเป้าหมายของคุณอยู่ที่ไหน คุณสามารถใช้ alertra.com เพื่อตรวจสอบความเร็ว CDN จากสถานที่ต่างๆทั่วโลก


สิ่งนี้ไม่ได้ให้คำตอบสำหรับคำถาม หากต้องการวิจารณ์หรือขอคำชี้แจงจากผู้แต่งโปรดแสดงความคิดเห็นใต้โพสต์ของพวกเขา
— ฟิโอน่า - myaccessible.website

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

3

ข้อควรพิจารณาเพิ่มเติมประการหนึ่ง - หากเว็บไซต์ของคุณเป็น SSL และคุณต้องรองรับ Android 2.1 (หรือรุ่นก่อนหน้า) ใบรับรอง SSL ของ Microsoft CDN รุ่น HTTPS จะทำให้เบราว์เซอร์ Android เวอร์ชันดังกล่าวขัดข้อง: http: // code .google.com ไม่ใช่ "ความผิดพลาด" ของ Microsoft เนื่องจากใบรับรอง SSL นั้นถูกต้องทางเทคนิคและข้อบกพร่องอยู่ในการใช้งาน SSL ของ Android ... แต่จะทำให้เว็บไซต์ของคุณเสียหาย แต่อย่างไรก็ตาม

ใบรับรอง SSL ใน CDN ของ Google ไม่ได้ตกอยู่ในปัญหานี้โดยเฉพาะ (เกี่ยวข้องกับ "ชื่อเรื่องหัวเรื่องของใบรับรอง" ของใบรับรอง)

ดังนั้นสำหรับการสนับสนุน SSL + Android 2.1 ให้ใช้ Google CDN


2

คำตอบของฉันแตกต่างจากคนอื่นเล็กน้อยฉันจะไปกับ microsoft ถ้าคุณต้องการ jQuery validator ซึ่งเกือบทุกคนต้องการถ้าคุณใช้ jquery

การเชื่อมต่อ http ของ Microsoft CDN คือ Keep-Alive ซึ่งเป็นข้อดีอย่างมากเมื่อคุณร้องขอหลายรายการ

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


1

ในช่วงฤดูร้อนมีข้อความระบุว่าไมโครซอฟท์ไม่ได้ให้บริการ UI ซึ่งไม่ถูกต้อง (อีกต่อไป) มันอาจจะเป็นที่ downloadloade http://www.asp.net/ajaxlibrary/cdn.ashx


1

นอกจากนี้ควรพิจารณาเมื่อใช้ Google CDN ว่าบางครั้งผู้คนพิมพ์ผิดเช่น ajax.googelapis.com สิ่งนี้อาจสร้างการโจมตี xss ที่น่ารังเกียจจริงๆได้ ฉันได้ทำการทดสอบสิ่งนี้จริง ๆ โดยการลงทะเบียนพิมพ์ผิด googlapis.com และพบว่าตัวเองอย่างรวดเร็วให้บริการการร้องขอสำหรับ javascript, แผนที่, CSS และอื่น ๆ

ฉันส่งอีเมลไปยัง Google และขอให้พวกเขาลงทะเบียน CDN typo URL ที่คล้ายกัน แต่ไม่ได้รับการตอบกลับ นี่อาจเป็นเหตุผลที่แท้จริงที่จะไม่พึ่งพา CDN เพราะมีผู้โจมตีที่อาจเป็นอันตรายรอการร้องขอการพิมพ์ผิดและสามารถให้บริการ jquery กลับด้วย xss payload ได้อย่างง่ายดาย

ขอบคุณ


1
อาจเป็นหัวข้อเล็กน้อย แต่อาจเป็นประเด็นที่น่าสนใจ
— achairapart

1

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

ตัวอย่างเช่นเมื่อคุณรวม Google Analytics ในแอปพลิเคชันที่ปลอดภัยเบราว์เซอร์จะยังคงส่ง URL ปัจจุบันเป็นส่วนหัว "อ้างอิง" ตัวระบุใด ๆ พูดว่ารหัสเซสชันหรือโทเค็นลับอาจปรากฏในบันทึกของพวกเขา ตัวอย่างเช่นหาก IP ของลูกค้าเป็น 192.0.2.5references https: //healthsystem.example/condition/impotenceคุณก็สามารถอนุมานข้อมูลที่ถือว่าเป็นส่วนตัวได้

กรณีอื่น ๆ รวมถึงข้อมูลที่เป็นผลลัพธ์เช่นหมายเลขบัญชีหมายเลขประกันสังคมหรือข้อมูลเซสชันใน URL ข้อมูลประเภทนั้นไม่ควรอยู่ใน URL เนื่องจากสามารถใช้ภายนอกแอปพลิเคชันได้

ในขณะที่คุณอาจเชื่อถือ Google, Microsoft หรือ Yahoo ผู้ใช้ของคุณอาจไม่

สำหรับอุตสาหกรรมเช่นการเงินกฎหมายและการดูแลสุขภาพคุณอาจต้องการสร้าง CDN ของคุณเองด้วยความช่วยเหลือของผู้ขาย (เช่น Akamai) ซึ่งคุณสามารถลงนามใน BAA


1

เราขอแนะนำให้คุณอ้างอิงการใช้งานของคุณตามตำแหน่งทั่วไปของผู้ใช้ที่คุณกำหนดเป้าหมาย

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

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

* โปรดทราบว่าคุณสามารถสร้างเว็บไซต์เฉพาะภูมิภาคเช่น cn.mysite.com เพื่อรองรับเฉพาะสำหรับประเทศจีน แต่ถ้าคุณมีทรัพยากรและเวลาเหลือน้อย

รายการทั้งหมดของ Microsoft CDN ที่นี่ http://www.asp.net/ajaxlibrary/cdn.ashx

พวกเขาได้เปลี่ยนชื่อเป็นajax.aspnetcdn.comซึ่งช่วยลดโอกาสในการบล็อกโดยกฎไฟร์วอลล์


-3

ฉันจะใช้ทั้งสอง!

เนื่องจากโฮสติ้ง Jquery ของ Google ใช้เวลานานกว่ามากโอกาสสูงกว่ามากที่ผู้คนจะมีแคชอยู่แล้วเมื่อเทียบกับ Microsoft หนึ่งดังนั้นฉันจะมีมันก่อน

โดยส่วนตัวฉันจะใช้สิ่งนี้ -

if (typeof jQuery == 'undefined') {  
    // jQuery is not loaded  

  document.write("<scr" + "ipt type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js\"></scr" + "ipt>");
        }
} else {
    // jQuery is loaded
}

(ไม่แน่ใจว่าใช้งานได้ 100% แต่ฉันเพิ่งจะเขียนความคิดและไม่ใช่ตัวอย่าง - นี่เป็นการอ้างอิง Jquery ที่โฮสต์โดย Google และไม่ใช่ Microsoft เพราะฉันหาลิงค์ไม่พบ)


6
jQuery จะไม่ถูกกำหนดยกเว้นว่าคุณนำมาไว้ในหน้าของคุณ การแคชไฟล์. js doe snot ทำให้หน้าเบราว์เซอร์ทุกหน้าเป็นค่าเริ่มต้น!
— Falkayn

1
ใช้งานได้: อ่านสคริปต์อีกครั้งถ้าไม่ได้กำหนดไว้จะเขียนและโหลดหรือไม่
— วิล

12
ฉันไม่เคยเข้าใจเลยว่าทำไมคนถึงทำ "<scr" + "ipt ... "
— คนขี้ขลาดนิรนาม

3
"ขึ้นอยู่กับเบราว์เซอร์จำนวนจาวาสคริปต์ก่อนหน้าอื่น ๆ และวิธีการจัดรูปแบบรหัสโดยรวมให้ดีขึ้นเพื่อป้องกันตัวแยกวิเคราะห์จากการแปลแท็ก <script> และ </script> เป็นรหัสที่สามารถใช้งานได้แทนที่จะเป็นสตริง ที่จะเขียน "
— SeanJA

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