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.