Microsoft CDN voor jQuery of Google CDN?

Maakt het eigenlijk uit welk CDN je gebruikt om naar je jQuery-bestand of een ander javascript-bestand te linken. Is de een mogelijk sneller dan de ander? Welke andere factoren kunnen een rol spelen bij welke cdn je besluit te gebruiken? Ik weet dat Microsoft, Yahoo en Google nu allemaal CDN’s hebben.


Antwoord 1, autoriteit 100%

Update op basis van opmerkingen:

Korte versie:het maakt niet veel uit, maar het kan afhangen van wat ze hosten. Ze hosten allemaal verschillende dingen: Google host geen jQuery.Validate, Microsoft host geen jQuery-UI, sinds 2016 wel!!, Microsoft biedt hun scripts aan die anders via ScriptResource.axdzouden worden aangeboden en een eenvoudigere integratie (bijv. ScriptManager met ASP.Net 4.0).

Belangrijke opmerking:Als u een intranettoepassing bouwt, blijf dan weg van de CDN-aanpak. Het maakt niet uit wie het host, tenzij je intern op een zeeroverbelaste server zit, zal geen enkel CDN je meer prestaties geven dan lokaal 100mb/1GB ethernet. Als u een CDN gebruikt voor een strikt interne toepassing, doet u afbreuk aan de prestaties. Stel de vervaldatums van je cache correct inen negeer de aanwezigheid van CDN’s op het intranet -alleen scenario.

De kans dat een van beide wordt geblokkeerd lijkt ongeveer gelijk, bijna nul. Ik heb gewerkt aan contracten waar dit niet waar is, maar het lijkt een uitzondering te zijn. Sinds de oorspronkelijke publicatie van dit antwoord is de context eromheen ook enorm veranderd, het Microsoft CDN heeft veel vooruitgang geboekt.

Het project waaraan ik momenteel deel, gebruikt beide CDN’s, wat het beste werkt voor onze oplossing. Hierbij spelen meerdere factoren een rol. Gebruikers met een oudere browserdoen waarschijnlijk nog steeds 2 gelijktijdige verzoeken per domein zoals aanbevolen door de HTTP-specificatie. Dit is geen probleem voor iedereen die iets fatsoenlijks gebruikt dat pipelining ondersteunt(elke huidige browser), maar op basis van een andere factor elimineren we deze beperking ook, in ieder geval voor zover het javascript betreft.

Google’s CDN die we gebruiken voor:

Microsoft’s CDN die we gebruiken voor:

Onze server:

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

Omdat een deel van ons bouwproces het combineren en verkleinen van alle aangepaste javascript is, doen we dit via een aangepaste scriptmanager die de release- of foutopsporingsversies (niet-verkleinde) versies van deze scripts bevat, afhankelijk van de build. Aangezien Google het jQuery-validatiepakket niet host, kan dit een nadeel zijn. MVC neemt/gebruikt dit in hun 2.0 release, dus je kunt volledig vertrouwen op Microsoft’s CDN voor al je behoeften, en alles automatisch via de ScriptManager.

Het enige andere argument dat kan worden aangevoerd zijn DNS-tijden, hier zijn kosten aan verbonden in termen van laadsnelheid van de pagina. Gemiddeld:simpelweg omdat het meer wordt gebruikt (het bestaat al langer) zal ajax.googleapis.comwaarschijnlijk eerder worden geretourneerd door DNS dan ajax.microsoft.com, simpelweg omdat de lokale DNS-server er eerder een verzoek voor kreeg (dit is een eerste gebruiker in de area penalty). Dit is een zeerklein ding en moet alleen worden overwogen als prestaties uiterst belangrijk zijn, tot op de milliseconde.
(Ja: ik realiseer me dat dit in strijd is met mijn gebruik van beide CDN’s, maar in ons geval wordt de DNS-tijd ver overschaduwd door de wachttijd op de javascript/blokkering die optreedt)

Als laatste, als je er nog niet naar hebt gekeken, is Firebugeen van de beste tools die er zijn. plug-ins ervoor: Paginasnelheiden YSlow. Als je een CDN gebruikt, maar je pagina’s elke keer om afbeeldingen vragen omdat er geen cache-headers zijn, mis je het laaghangende fruit. Het Net-paneel van Firebug kan u snel een snel overzicht geven van de laadtijd van uw pagina, en Page Speed/YSlow kan enkele goede suggesties doen om u te helpen.


Antwoord 2, autoriteit 59%

Je moet absoluut het Google CDN voor jQuery gebruiken (en dit komt van een op Microsoft gerichte ontwikkelaar).

Het zijn simpele statistieken. Degenen die zouden overwegen om de MS CDN voor jQuery te gebruiken, zullen altijd een minderheid zijn. Er zijn te veel niet-MS-ontwikkelaars die jQuery gebruiken en die van Google zullen gebruiken en niet zouden overwegen om die van Microsoft te gebruiken. Sinds een van de grote overwinningen met een openbare CDN is verbeterde caching, het splitsen van het gebruik over meerdere CDN’s vermindert het potentieel voor dat voordeel.


Antwoord 3, autoriteit 13%

Google stuurt je een jQuery-versie die is verkleind met hun eigen software. Deze versie is 6 kb lichter dan de standaard verkleinde versie van MS. Ga voor Google.


Antwoord 4, autoriteit 12%

Een klein ding om te overwegen is dat beide bedrijven iets verschillende “extra” bibliotheken aanbieden:

Afhankelijk van uw behoeften kan dit relevant zijn.


Antwoord 5, autoriteit 10%

Er moet ook worden opgemerkt dat, aangezien ajax.microsoft.com een ​​subdomein is van microsoft.com-verzoeken, alle microsoft.com-cookies worden verzonden, waardoor de totale tijd die nodig is om het bestand terug te krijgen, toeneemt.

Ajax.microsoft.com gebruikt bovendien standaard IIS7-compressie die inferieur is aan de standaardcompressie die andere webservers gebruiken.

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

Ook, zoals anderen al hebben gezegd, is google CDN veel populairder, wat de kans aanzienlijk vergroot dat een bestand in de cache wordt opgeslagen.

Dus ik raad het gebruik van Google ten zeerste aan.


Antwoord 6, autoriteit 7%

Het maakt waarschijnlijk niet uit, maar je zou dit kunnen valideren met wat A/B-testen. Stuur de helft van uw verkeer naar het ene CDN en de andere helft naar het andere, en stel wat profilering in om de respons te meten. Ik zou het belangrijker vinden om gemakkelijk te kunnen overstappen voor het geval de een of de ander ernstige problemen met de beschikbaarheid heeft.


Antwoord 7, autoriteit 5%

Ik weet dat ik hier een beetje laat halen, maar hier is de code die ik in de productie heb gebruikt. Ik heb er nooit problemen mee gehad, maar je kilometerstand kan variëren. Zorg ervoor dat je het in je eigen omgeving test.

<script src="https://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="https://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> 

8, Autoriteit 3%

Zoals vermeld door Pingdom :

Wanneer iemand uw site bezoekt, als ze al een andere hebben bezocht
Site die hetzelfde jQuery-bestand op dezelfde CDN gebruikt, het bestand zal
zijn in de cache en hoeft helemaal niet te worden gedownload. Het kan het niet
krijg sneller dan dat.

Dit betekent dat de meest gebruikte CDN de kansen op zijn
kant, die kan betalen voor uw site.

Een paar observaties op prestaties:
Google’s CDN is consequent de langzaamste van de drie in Noord-Amerika als Europa. In Europa is de CDN van Microsoft de snelste.


9, Autoriteit 2%

Ik denk dat het afhangt van waar is je gerichte publiek. U kunt ALERTRA.com gebruiken om zowel CDN-snelheid van vele locaties over de hele wereld te controleren.


10, Autoriteit 2%

Een extra overweging: als uw site SSL is en u Android 2.1 (of eerder) moet ondersteunen, zal het SSL-certificaat op de HTTPS-versie van het Microsoft CDN die versies van de Android-browser laten crashen, volgens dit probleem: http://code.google.com/p/android/issues/detail?id =5001. Het is niet de “fout” van Microsoft, aangezien het SSL-certificaat technisch geldig is en het defect zit in de SSL-implementatie van Android… maar het zal je site niettemin laten crashen.

Het SSL-certificaat op het CDN van Google is niet in strijd met dit specifieke probleem (met betrekking tot de “Alt-naam van het certificaatonderwerp”).

Dus, voor SSL + Android 2.1-ondersteuning, gebruik het Google CDN.


Antwoord 11

Mijn antwoord is een beetje anders dan anderen, ik ga voor microsoft als je jQuery-validator nodig hebt, die bijna iedereen nodig heeft als je jQuery gebruikt.

Microsoft CDN http-verbinding is Keep-Alive, wat een groot pluspunt is wanneer u meerdere items aanvraagt.

Dus als je jQuery-validatie nodig hebt, gebruik dan Microsoft CDN, zelfs als je jQuery ui nodig hebt, gebruik microsoft omdat Google niet keep-alive houdt, dus elk verzoek staat op zichzelf. dus mengen op die manier is een pluspunt. als u microsoft alleen voor validator gebruikt, maakt u voor elk verzoek een aparte verbinding met de Google-server.


Antwoord 12

In de samenvatting staat dat microsoft geen UI aanbiedt, dat klopt niet (meer). Het kan worden gedownload op http://www.asp.net/ajaxlibrary/cdn.ashx.


Antwoord 13

Houd er bij het gebruik van Google CDN rekening mee dat mensen soms typefouten maken, zoals ajax.googelapis.com. Dit kan mogelijk een erg vervelende xss-aanval (cross site scripting) veroorzaken. Ik heb dit echt uitgeprobeerd door een typfout van googlapis.com te registreren en merkte al snel dat ik verzoeken voor javascript, kaarten, css enz. diende.

Ik heb Google een e-mail gestuurd met het verzoek soortgelijke CDN-typfout-URL’s te registreren, maar ik heb niets gehoord. Dit zou een echte reden kunnen zijn om niet op CDN’s te vertrouwen, omdat er potentieel gevaarlijke aanvallers zijn die wachten op de typefoutverzoeken en gemakkelijk jQuery enz. kunnen terugsturen met een xss-payload.

Bedankt


Antwoord 14

Afhankelijk van de branche waarop de toepassing zich richt, wilt u misschien geen CDN gebruiken dat door andere organisaties wordt beheerd. Het roept vaak vragen op over compliance, privacy en vertrouwelijkheid.

Als u bijvoorbeeld Google Analytics opneemt in een beveiligde toepassing, verzendt de browser nog steeds de huidige URL als de kop ‘verwijzend’. Alle id’s, bijvoorbeeld een sessie-ID of geheime token, kunnen in hun logboeken verschijnen. Als een client-IP van 192.0.2.5 verwijst naar https://healthsystem.example/condition/impotentie, dan kun je informatie afleiden die als nogal privé wordt beschouwd.

Andere gevallen bevatten belangrijke informatie, zoals een rekeningnummer, burgerservicenummer of sessie-informatie in de URL. Dat soort gegevens mag nooit in de URL staan, omdat deze buiten de applicatie kan worden gebruikt.

Hoewel u Google, Microsoft of Yahoo vertrouwt, doen uw gebruikers dat misschien niet.

Voor sectoren zoals financiën, juridische zaken en gezondheidszorg wilt u misschien uw eigen CDN opzetten met de hulp van een leverancier (bijv. Akamai) waarmee u een BAA kunt ondertekenen.


Antwoord 15

Ik raad u aan uw gebruik te baseren op de algemene locatie van de gebruikers die u target.

Als uw site is gericht op het grote publiek, is het gebruik van het CDN van Google een goede keuze.

Als uw site ook op China is gericht, is het gebruik van Microsoft’s CDN een betere keuze.
Ik weet uit ervaring dat de servers van Google steeds geblokkeerd werden door de Chinese overheid, waardoor websites die ze gebruiken niet meer konden worden geladen.

*Houd er rekening mee dat u regiospecifieke sites kunt maken, b.v. cn.mysite.com om specifiek voor China te zorgen, maar als je weinig middelen en tijd hebt, is het een overweging waard.

Volledige lijst van Microsoft CDN hier.
http://www.asp.net/ajaxlibrary/cdn.ashx

Sindsdien zijn ze hernoemd naar ajax.aspnetcdn.com, wat de kans op blokkering door firewallregels verkleint.


Antwoord 16

Ik zou beide gebruiken!

Aangezien de Google JQuery-hosting al veel langer bestaat, is de kans veel groter dat mensen deze al in de cache hebben staan dan die van Microsoft, dus ik zou hem als eerste hebben.

Persoonlijk zou ik zoiets als dit gebruiken –

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
}

(Ik weet niet zeker of dit 100% werkt, maar ik wilde alleen het idee schrijven en niet het voorbeeld – dit verwijst naar de door Google gehoste JQuery en niet die van Microsoft, omdat ik de link niet kon vinden)

Other episodes