javascript - Microsoft CDN for jQuery eller Google CDN?
Spiller det egentlig noen rolle hvilken CDN du bruker for å koble til jquery-filen din eller hvilken som helst javascript-fil for den saks skyld? Er en potensielt raskere enn den andre? Hvilke andre faktorer kan spille en rolle i hvilken CDN du velger å bruke? Jeg vet at Microsoft, Yahoo og Google alle har CDN-er nå.
Svar #1
Oppdatering basert på kommentarer:
Kort versjon: Det spiller ikke så stor rolle, men det kan avhenge av hva de hoster. De hoster alle forskjellige ting: Google hoster ikke jQuery.Validate, Microsoft hostet ikke jQuery-UI, siden 2016 gjør de det!! Microsoft tilbyr sine skript som ellers ville blitt servert via ScriptResource.axd og en enklere integrasjon (f.eks. ScriptManager med ASP.Net 4.0).
Viktig merknad: Hvis du bygger en intranettapplikasjon, hold deg unna CDN-tilnærmingen. Det spiller ingen rolle hvem som hoster den, med mindre du er på en veldig overbelastet server internt, vil ingen CDN gi deg mer ytelse enn lokal 100mb/1GB Ethernet. Hvis du bruker en CDN for en strengt intern applikasjon, skader du ytelsen. Sett cache-utløpstidene korrekt og ignorer tilstedeværelsen av CDN i scenarioet der det kun er intranett.
Sjansene for at noen av dem blir blokkert ser ut til å være omtrent like, nesten null. Jeg har jobbet med kontrakter hvor dette ikke er tilfelle, men det ser ut til å være et unntak. Også, siden den opprinnelige publiseringen av dette svaret, har konteksten rundt det endret seg mye, Microsofts CDN har gjort mye fremgang.
Prosjektet jeg jobber med nå bruker begge CDN-ene, noe som fungerer best for vår løsning. Flere faktorer spiller inn her. Brukere med en eldre nettleser sender sannsynligvis fortsatt 2 samtidige forespørsler per domene som anbefalt av HTTP-spesifikasjonen. Dette er ikke et problem for noen som bruker noe som er relativt nytt og støtter pipelining (alle nåværende nettlesere), men basert på en annen faktor fjerner vi også denne begrensningen, i det minste når det gjelder JavaScript.
Googles CDN vi bruker for:
- jquery.min.js
- jquery-ui.min.js.
Microsofts CDN vi bruker for:
- MicrosoftAjax.js
- MicrosoftAjaxWebForms.js (inntil 4.0 fjerner vi ikke helt alle UpdatePanels)
- jQuery.Validate.min.js
Vår server:
- Combined.js?v=2.2.0.6190 (Hoved.Små.Iterasjon.Endringssett)
Siden en del av byggeprosessen vår er å kombinere og minimere all egendefinert JavaScript, gjør vi dette via en egendefinert skriptbehandler som inkluderer release- eller debug-versjoner (ikke-minifiserte) av disse skriptene avhengig av bygget. Siden Google ikke hoster jQuery-valideringspakken, kan dette være en ulempe. MVC inkluderer/bruke dette i sin 2.0-utgivelse, så du kan stole helt på Microsofts CDN for alle behovene dine, og alt dette skjer automatisk via ScriptManager.
Det eneste andre argumentet som kan fremmes, ville være DNS-tider, det er en kostnad knyttet til dette i form av sideinnlastingshastighet. I gjennomsnitt: Enkelt fordi det brukes mer (det har eksistert lenger) ajax.googleapis.com vil sannsynligvis bli returnert av DNS raskere enn ajax.microsoft.com, rett og slett fordi den lokale DNS-serveren mest sannsynlig fikk en forespørsel om det (dette er en straff for første bruker i området). Dette er en veldig liten ting og bør kun vurderes hvis ytelsen er ekstremt viktig, ned til millisekundet.
(Ja: Jeg er klar over at dette punktet er i strid med at jeg bruker begge CDN-ene, men i vårt tilfelle overskygger DNS-tiden langt ventetiden på javascript/blokkeringen som oppstår)
Til slutt, hvis du ikke har sett på det, er et av de beste verktøyene der ute Firebug, og noen tillegg for det: Page Speed og YSlow. Hvis du bruker en CDN, men sidene dine laster bilder hver gang på grunn av manglende cache-headere, går du glipp av de lett tilgjengelige forbedringene. Firebugs Net-panel kan raskt gi deg en oversikt over lastetiden for siden din, og Page Speed/YSlow kan tilby noen gode forslag til hjelp.
Svar #2
Du bør absolutt bruke Googles CDN for jQuery (og dette kommer fra en Microsoft-sentrert utvikler).
Det er enkel statistikk. De som vil vurdere å bruke MS CDN for jQuery vil alltid være et mindretall. Det er altfor mange ikke-MS-utviklere som bruker jQuery som vil bruke Googles og ikke vil vurdere å bruke Microsofts. Siden en av de store fordelene med en offentlig CDN er forbedret caching, reduserer det å dele bruken mellom flere CDN-er potensialet for denne fordelen.
Svar #3
Google vil sende deg en jQuery-versjon minifisert med deres egen programvare, denne versjonen er 6 kb lettere enn den standard minifiserte versjonen som tilbys av MS. Velg Google.
Svar #4
En liten ting å vurdere er at begge selskapene tilbyr litt forskjellige "ekstra" biblioteker:
- Microsoft tilbyr JQuery valideringsbibliotek på deres CDN, mens Google ikke gjør det (http://www.asp.net/ajaxlibrary/cdn.ashx)
- Google tilbyr JQuery UI-biblioteket på deres CDN, mens Microsoft ikke gjør det (http://code.google.com/apis/ajaxlibs/documentation/)
Avhengig av dine behov, kan dette være relevant.
Svar #5
Det bør også bemerkes at siden ajax.microsoft.com er et underdomene av microsoft.com, sendes forespørsler med alle microsoft.com-informasjonskapsler, noe som øker den totale tiden det tar å få filen tilbake.
Også bruker ajax.microsoft.com standard IIS7-komprimering, som er dårligere enn standardkomprimeringen som andre webservere bruker.
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
Også, som andre har nevnt, er Google CDN mye mer populært, noe som øker sjansen for at en fil blir bufret betydelig.
Så jeg anbefaler sterkt å bruke Google.
Svar #6
Det spiller sannsynligvis ingen rolle, men du kan validere dette med noen A/B-tester. Send halvparten av trafikken din til én CDN, og halvparten til den andre, og sett opp noen profileringsverktøy for å måle responsen. Jeg vil tro det er viktigere å kunne bytte enkelt i tilfelle den ene eller den andre skulle få alvorlige tilgjengelighetsproblemer.