Microsoft CDN für jQuery oder Google CDN? [geschlossen]

187

Ist es tatsächlich wichtig, welches CDN Sie zum Verknüpfen mit Ihrer JQuery-Datei oder einer Javascript-Datei verwenden? Ist einer möglicherweise schneller als der andere? Welche anderen Faktoren könnten eine Rolle bei der Verwendung von CDN spielen? Ich weiß, dass Microsoft, Yahoo und Google jetzt alle CDNs haben.

Xaisoft
quelle

Antworten:

151

Update basierend auf Kommentaren:

Kurzversion: Es spielt keine Rolle, aber es kann davon abhängen, was sie hosten. Sie alle hosten verschiedene Dinge: Google hostet jQuery nicht. Validieren, Microsoft hat jQuery-UI nicht gehostet, seit 2016 !!, Microsoft bietet ihre Skripte an, die sonst über bereitgestellt würden, ScriptResource.axdund eine einfachere Integration (z . B. ScriptManager mit ASP). Netto 4.0 ).

Wichtiger Hinweis: Wenn Sie eine Intranetanwendung erstellen, halten Sie sich vom CDN-Ansatz fern. Es spielt keine Rolle, wer es hostet , es sei denn, Sie befinden sich intern auf einem stark überlasteten Server. Kein CDN bietet Ihnen mehr Leistung als lokales 100-MB / 1-GB-Ethernet. Wenn Sie ein CDN für eine streng interne Anwendung verwenden, beeinträchtigen Sie die Leistung . Stellen Sie Ihre Cache-Ablauf-Header korrekt ein und ignorieren Sie CDNs, die im Nur-Intranet-Szenario vorhanden sind.

Die Wahrscheinlichkeit, dass einer von beiden blockiert wird, scheint ungefähr gleich zu sein, fast Null. Ich habe an Verträgen gearbeitet, bei denen dies nicht der Fall ist, aber es scheint eine Ausnahme zu sein. Seit der ursprünglichen Veröffentlichung dieser Antwort hat sich der Kontext, in dem sie sich befindet, stark geändert. Das Microsoft CDN hat große Fortschritte gemacht.

Das Projekt, an dem ich gerade arbeite, verwendet beide CDNs, was für unsere Lösung am besten funktioniert. Dabei spielen mehrere Faktoren eine Rolle. Benutzer mit einem älteren Browser stellen wahrscheinlich immer noch zwei gleichzeitige Anforderungen pro Domain, wie in der HTTP-Spezifikation empfohlen . Dies ist kein Problem für jemanden, der etwas anständig Neues ausführt, das Pipelining unterstützt (jeder aktuelle Browser), aber basierend auf einem anderen Faktor beseitigen wir diese Einschränkung auch, zumindest was das Javascript betrifft.

Googles CDN, das wir verwenden für:

Microsofts CDN, das wir verwenden für:

Unser Server:

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

Da ein Teil unseres Erstellungsprozesses darin besteht, alle benutzerdefinierten Javascript zu kombinieren und zu minimieren, erfolgt dies über einen benutzerdefinierten Skriptmanager, der je nach Build die Release- oder Debug-Versionen (nicht minimiert) dieser Skripte enthält. Da Google das jQuery-Validierungspaket nicht hostet, kann dies ein Nachteil sein. MVC nimmt dies in seiner Version 2.0 auf / verwendet es, sodass Sie sich für alle Ihre Anforderungen vollständig auf das CDN von Microsoft verlassen können und dies alles automatisch über den ScriptManager .

Das einzige andere Argument, das vorgebracht werden muss, sind DNS-Zeiten. Dies ist mit Kosten für die Seitenladegeschwindigkeit verbunden. Durchschnittlich: Nur weil es mehr verwendet wird (es gibt es schon länger), ajax.googleapis.comwird es wahrscheinlich früher von DNS zurückgegeben als ajax.microsoft.comeinfach, einfach weil der lokale DNS-Server eher eine Anfrage dafür erhalten hat (dies ist ein erster Benutzer in der Gebietsstrafe). . Dies ist eine sehr kleine Sache und sollte nur in Betracht gezogen werden, wenn die Leistung bis auf die Millisekunde extrem wichtig ist.
(Ja, mir ist klar, dass dieser Punkt meiner Verwendung beider CDNs widerspricht, aber in unserem Fall wird die DNS-Zeit durch die Wartezeit auf das auftretende Javascript / Blockieren bei weitem überschattet.)

Wenn Sie es sich nicht angesehen haben, ist Firebug eines der besten Tools und einige Plug-Ins dafür: Page Speed und YSlow . Wenn Sie ein CDN verwenden, Ihre Seiten jedoch jedes Mal Bilder anfordern, weil keine Cache-Header vorhanden sind, fehlt Ihnen die niedrig hängende Frucht. Das Net-Panel von Firebug kann Ihnen schnell eine schnelle Aufschlüsselung der Ladezeit Ihrer Seite geben, und Page Speed ​​/ YSlow bietet einige gute Vorschläge, um Ihnen zu helfen.

Nick Craver
quelle
26
Weniger wahrscheinlich blockiert werden? Ich würde gerne wissen, wie Sie auf diese Idee gekommen sind. Das MS-Netzwerk ist sowieso kein MS-Netzwerk, sondern Akamais, die viel länger Server mit Lastenausgleich betreiben als Google, was auch einen Unsinn des "besseren Fall-Over-Systems" darstellt. Wirklich, wenn Sie solche Behauptungen aufstellen wollen, wären einige Beweise nett.
Blowdart
16
Einige Unternehmen, und ich habe für einige gearbeitet, blockieren * .microsoft.com direkt als Teil ihrer Blockierung von Windows-Updates. Ist das richtig? Nein, passiert es? Ja. Beispiel: ajax.microsoft.com/...it fällt unter den Block * .microsoft.com und nicht unter die Ausnahme www. Es wird blockiert, wenn ein Unternehmen etwas anderes als www.microsoft.com blockiert. Ich habe nicht gesagt, dass es sehr wahrscheinlich ist, ich habe gesagt, dass es wahrscheinlicher ist, da ich Google noch nie blockiert gesehen habe, aber das Gegenteil gesehen habe.
Nick Craver
5
Und ich habe gesehen, dass Google blockiert wurde, um Google Mail auf Regierungsseiten zu stoppen. Aber da es so selten ist, würde ich in diesem Fall kaum versuchen, es als Rechtfertigung zu verwenden.
Blowdart
19
Seitdem dies geschrieben wurde, haben MS jQuery-UI zu ihrem CDN hinzugefügt: asp.net/ajaxlibrary/cdn.ashx#Using_jQuery_UI_from_the_CDN_10
Will Dean
3
@Nick Microsoft hat sein CDN von ajax.microsoft.com auf ajax.aspnetcdn.com verschoben. Es besteht also keine Möglichkeit, das CDN von Microsoft als Teil des Blockierens von Windows-Updates zu blockieren.
Sachin Joseph
88

Sie sollten unbedingt das Google CDN für jQuery verwenden (und dies stammt von einem Microsoft-zentrierten Entwickler).

Es ist eine einfache Statistik. Diejenigen, die in Betracht ziehen würden, das MS CDN für jQuery zu verwenden, werden immer eine Minderheit sein. Es gibt zu viele Nicht-MS-Entwickler, die jQuery verwenden und Google verwenden und Microsoft nicht in Betracht ziehen. Da einer der großen Vorteile eines öffentlichen CDN das verbesserte Caching ist , verringert die Aufteilung der Nutzung auf mehrere CDNs das Potenzial für diesen Vorteil.

Dave Ward
quelle
7
Wenn wir so weiter denken, werden nur größere Menschen zu Atem kommen. Verwenden Sie nicht nur Google, weil es Google ist, und nehmen Sie an, dass alle bei ihnen sind (zweifellos sind die meisten bei ihnen). Aber lassen Sie am besten gewinnen, das Ergebnis vergleichen und mitmachen.
Mamu
20
Es ist keine Annahme. Websites in der Alexa Top 200.000 mit Googles CDN sind zahlreicher als Microsoft mit über 100: 1. In Bezug auf die Beliebtheit beim Caching ist der einzige Punkt, der für das MS jQuery-CDN spricht, dass Microsoft.com es verwendet, wodurch es allein durch diese eine Referenz viel Aufmerksamkeit erhält (aber nicht so viel wie die Tausenden von Top-Websites, die auf Google verweisen ).
Dave Ward
@ DaveWard, können Sie überprüfen, ob dies immer noch der Fall ist, oder haben sich die Tische in den letzten Jahren etwas gewendet?
Snumpy
3
@snumpy: Das Google CDN hat seinen Vorsprung gegenüber dem, was ich gesehen habe, erheblich ausgebaut. Mit dem Microsoft CDN ist nichts falsch . Es ist schnell und hat ein paar Dateien, die Google nicht hat. Der Cross-Site-Caching-Vorteil hängt jedoch von der netzweiten Abdeckung ab, und Google dominiert in dieser Hinsicht alle anderen.
Dave Ward
Da ich für das Hosting von jQuery Mobile von jQuery CDN zu Microeoft gewechselt bin, habe ich meine anderen jQuery-Downloads von Google darauf verschoben, um die Anzahl der DNS-Roundtrips zu verringern. Nur ein weiterer Faktor :)
Rob Grant
20

Google sendet Ihnen eine jQuery-Version, die mit einer eigenen Software minimiert wurde. Diese Version ist 6 KB leichter als die standardisierte minimierte Version, die von MS bereitgestellt wird. Gehen Sie zu Google.

Oscar Kilhed
quelle
18

Eine Kleinigkeit zu berücksichtigen ist, dass beide Unternehmen leicht unterschiedliche "zusätzliche" Bibliotheken anbieten:

Abhängig von Ihren Anforderungen kann dies relevant sein.

dp.
quelle
23
Seitdem dies geschrieben wurde, haben MS jQuery-UI zu ihrem CDN hinzugefügt: asp.net/ajaxlibrary/cdn.ashx#Using_jQuery_UI_from_the_CDN_10
Will Dean
15

Es sollte auch beachtet werden, dass ajax.microsoft.com eine Unterdomäne von Microsoft.com-Anfragen ist, die alle Microsoft.com-Cookies senden, was die Gesamtzeit verlängert, die benötigt wird, um die Datei zurückzubekommen.

Außerdem verwendet ajax.microsoft.com die Standard-IIS7-Komprimierung, die der Standardkomprimierung anderer Webserver unterlegen ist.

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,5 KB

Wie andere bereits erwähnt haben, ist Google CDN weitaus beliebter, was die Wahrscheinlichkeit, dass eine Datei zwischengespeichert wird, erheblich erhöht.

Ich empfehle daher dringend, Google zu verwenden.

Alistair
quelle
3
Dies war zu dieser Zeit ein guter Einwand, gilt jedoch nicht mehr, da der empfohlene CDN-Domainname jetzt ajax.aspnetcdn.com lautet. Die Sperrung des * .microsoft.com-Widerspruchs gilt ebenfalls nicht mehr.
Stephen Kennedy
Das ist wahr. Ich bin froh, dass sie diesen Teil endlich repariert haben. Jetzt fühle ich mich nicht so schlecht, wenn ich das Plugin jquery validate / cycle aus der ms cdn einbinde.
Alistair
Cookies gelten auch nicht mehr wegen der Umstellung auf aspnetcdn.
Rob Grant
11

Es spielt wahrscheinlich keine Rolle, aber Sie könnten dies mit einigen A / B-Tests überprüfen. Senden Sie die Hälfte Ihres Datenverkehrs an ein CDN und die Hälfte an das andere und richten Sie eine Profilerstellung ein, um die Antwort zu messen. Ich würde es für wichtiger halten, einfach wechseln zu können, falls der eine oder andere ernsthafte Probleme mit der Nichtverfügbarkeit hatte.

lod3n
quelle
7

Ich weiß, dass ich hier etwas spät dran bin, aber hier ist der Code, den ich in der Produktion verwendet habe. Ich hatte noch nie Probleme damit, aber Ihr Kilometerstand kann variieren. Stellen Sie sicher, dass Sie es in Ihrer eigenen Umgebung testen.

<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> 
Jeremy Cade
quelle
1
Leider verzögern einige Browser (IE6) die Verarbeitung dieses Online-Skripts erst, nachdem das Skript src = geladen wurde, sodass dies nicht wie erwartet funktioniert. Ich wünschte, es würde!
Walden Leverich
2
Ihre IE6-Benutzer erleben also eine etwas langsame Erfahrung. Guter Kompromiss, wenn Sie mich fragen. IE6 ist rückläufig ... sogar in Unternehmens-Intranets.
Armstrongest
7

Es geht um Statistiken: jquery.com lädt jQuery von Google. Und Twitter, Stackoverflow und viele andere. Es gibt also ziemlich hohe Möglichkeiten, dass Ihr Website-Benutzer es bereits zwischengespeichert hat = überhaupt kein Download .

Vergessen Sie Validator, Bandbreite und Geschwindigkeit, da dies der Hauptvorteil ist. Andernfalls wird jede andere CDN-Option im Wesentlichen auf demselben Niveau ausgeführt.

achairapart
quelle
1
Ja, aber Twitter (laut Dave Wards encosia.com/2010/09/15/… ) verwendet jQuery 1.3.0 (in "altem" Twitter), so dass sie nicht wirklich wichtig sind ... noch nicht ...
veggerby
Nun, Websites, die ich vor einiger Zeit erstellt habe, verwenden immer noch jQuery 1.3.0, wie das (alte) Twitter. Es ist immer wichtig.
Achairapart
6

Ist einer möglicherweise schneller als der andere?

Ich war selbst neugierig darauf, also habe ich eine jsbin-Testseite mit den folgenden Methoden eingerichtet und sie dann über das visuelle Vergleichstool von webpagetest.org ausgeführt. Ich habe getestet:

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

Wer war am schnellsten: code.jquery.com in beiden Tests um 0,1 Sekunden

Wer war am langsamsten: ajax.aspnetcdn.com im ersten Test um 0,7 Sekunden und ajax.googleapis.com im zweiten Test um 1 Sekunde

Hier ist der 1. Test (jeder wurde dreimal getestet):

Video: http://www.webpagetest.org/video/view.php?id=121019_16c5e25eff2937f63cc1714ed1eac814794e62b3

Berichte: http://www.webpagetest.org/video/compare.php?tests=121019_D2_KF0,121019_9Q_KF1,121019_WW_KF2,121019_9K_KF3

Hier ist der 2. Test (jeweils weitere 3):

Video: http://www.webpagetest.org/video/view.php?id=121019_a7b351f706cad2c25664fee7ef349371f17c4e74

Berichte: http://www.webpagetest.org/video/compare.php?tests=121019_MP_KJN,121019_S6_KJP,121019_V9_KJQ,121019_VY_KJR

Anthony Hatzopoulos
quelle
4

Wie von Pingdom angegeben :

Wenn jemand Ihre Site besucht und bereits eine andere Site besucht hat, die dieselbe jQuery-Datei auf demselben CDN verwendet, wurde die Datei zwischengespeichert und muss überhaupt nicht heruntergeladen werden. Schneller geht es nicht.

Dies bedeutet, dass das am weitesten verbreitete CDN die Gewinnchancen auf seiner Seite hat, die sich für Ihre Website auszahlen können.

Einige Beobachtungen zur Leistung: Googles CDN ist sowohl in Nordamerika als auch in Europa durchweg das langsamste der drei. In Europa ist das CDN von Microsoft das schnellste.

Mayank
quelle
3

Ich denke, es hängt davon ab, wo sich Ihre Zielgruppe befindet. Sie können alertra.com verwenden, um beide CDN-Geschwindigkeiten von vielen Standorten auf der ganzen Welt aus zu überprüfen.

Leise
quelle
Dies gibt keine Antwort auf die Frage. Um einen Autor zu kritisieren oder um Klarstellung zu bitten, hinterlassen Sie einen Kommentar unter seinem Beitrag.
Fiona - myaccessible.website
1
Für Fiona ist es meine Antwort auf die Frage. Die Frage lautet "Ist es wichtig", meine Antwort lautet "Es hängt davon ab, wo sich seine Zielgruppe befindet", und ich habe eine Website bereitgestellt, auf der die Geschwindigkeit von verschiedenen Orten auf der ganzen Welt aus getestet werden kann, damit er entscheiden kann, welches CDN verwendet werden soll. Es ist kein Kommentar, es ist eine Antwort.
Stille
3

Eine zusätzliche Überlegung: Wenn Ihre Site SSL ist und Sie Android 2.1 (oder früher) unterstützen müssen, stürzt das SSL-Zertifikat in der HTTPS-Version des Microsoft CDN diese Versionen des Android-Browsers gemäß diesem Problem ab: http: // code .google.com / p / android / Issues / Detail? id = 5001 . Es ist nicht der "Fehler" von Microsoft, da das SSL-Zertifikat technisch gültig ist und der Fehler in der SSL-Implementierung von Android liegt ... aber es wird trotzdem Ihre Site zum Absturz bringen.

Das SSL-Zertifikat auf dem CDN von Google ist von diesem speziellen Problem nicht betroffen (in Bezug auf den "Alt-Namen des Zertifikatsbetreffs" des Zertifikats).

Verwenden Sie für die Unterstützung von SSL + Android 2.1 das Google CDN.

Kent McNeill
quelle
2

Meine Antwort ist etwas anders als die anderer. Ich werde mich für Microsoft entscheiden, wenn Sie einen JQuery-Validator benötigen, den fast jeder benötigt, wenn Sie JQuery verwenden.

Die Microsoft CDN-http-Verbindung ist Keep-Alive. Dies ist ein großes Plus, wenn Sie mehrere Elemente anfordern.

Wenn Sie also eine JQuery-Validierung benötigen, verwenden Sie Microsoft CDN, auch wenn Sie eine JQuery-Benutzeroberfläche benötigen. Verwenden Sie Microsoft, da Google nicht die Keep-Alive-Funktion beibehält, sodass jede Anfrage für sich ist. Auf diese Weise zu mischen ist also ein Plus. Wenn Sie Microsoft nur als Validator verwenden, stellen Sie für jede Anforderung eine separate Verbindung mit Google Server her.

mamu
quelle
1

Im Sommer heißt es, dass Microsoft keine Benutzeroberfläche anbietet, das ist nicht mehr korrekt (nicht mehr). Es kann unter http://www.asp.net/ajaxlibrary/cdn.ashx heruntergeladen werden .

Netsi1964
quelle
1

Beachten Sie bei der Verwendung von Google CDN auch, dass manchmal Tippfehler wie ajax.googelapis.com auftreten. Dies könnte möglicherweise zu einem wirklich bösen xss-Angriff (Cross Site Scripting) führen. Ich habe dies tatsächlich getestet, indem ich einen Tippfehler bei googlapis.com registriert habe, und sehr schnell festgestellt, dass ich Anfragen nach Javascript, Karten, CSS usw. bediente.

Ich habe Google eine E-Mail gesendet und sie gebeten, ähnliche CDN-Tippfehler-URLs zu registrieren, habe aber noch keine Antwort erhalten. Dies könnte ein echter Grund sein, sich nicht auf CDNs zu verlassen, da potenziell gefährliche Angreifer auf Tippfehler warten und JQuerys usw. mit einer xss-Nutzlast problemlos zurücksenden können.

Danke dir


quelle
1
ein bisschen abseits des Themas vielleicht, aber interessanter Punkt.
Achairapart
1

Je nachdem, auf welche Branche die Anwendung abzielt, möchten Sie möglicherweise kein CDN verwenden, das von anderen Organisationen verwaltet wird. Es wirft häufig Probleme in Bezug auf Compliance, Datenschutz und Vertraulichkeit auf.

Wenn Sie beispielsweise Google Analytics in eine sichere Anwendung aufnehmen, sendet der Browser weiterhin die aktuelle URL als "Referer" -Header. Alle Bezeichner, z. B. eine Sitzungs-ID oder ein geheimes Token, werden möglicherweise in ihren Protokollen angezeigt. Beispiel: Wenn eine Client-IP von 192.0.2.5 auf https: //healthsystem.example/condition/impotence verweist , können Sie auf Informationen schließen, die als eher privat angesehen werden.

Andere Fälle enthalten Informationen von Bedeutung, wie z. B. eine Kontonummer, eine Sozialversicherungsnummer oder Sitzungsinformationen in der URL. Diese Art von Daten sollte niemals in der URL enthalten sein, da sie außerhalb der Anwendung verwendet werden können.

Sie können Google, Microsoft oder Yahoo vertrauen, Ihre Nutzer jedoch möglicherweise nicht.

Für Branchen wie Finanzen, Recht und Gesundheitswesen möchten Sie möglicherweise mithilfe eines Anbieters (z. B. Akamai) ein eigenes CDN einrichten, mit dem Sie einen BAA unterzeichnen können.

Bloudraak
quelle
1

Ich würde empfehlen, dass Sie Ihre Nutzung auf den allgemeinen Standort der Benutzer stützen, auf die Sie abzielen.

Wenn Ihre Website für die breite Öffentlichkeit bestimmt ist, ist die Verwendung des CDN von Google eine gute Wahl.

Wenn Ihre Website auch auf China ausgerichtet ist, ist die Verwendung des CDN von Microsoft die bessere Wahl. Ich weiß aus meiner Erfahrung, dass die Server von Google immer wieder von der chinesischen Regierung blockiert wurden und Websites, auf denen sie verwendet werden, nicht mehr geladen werden können.

* Beachten Sie, dass Sie möglicherweise regionenspezifische Websites erstellen können, z. B. cn.mysite.com, um speziell für China zu sorgen. Wenn Sie jedoch wenig Ressourcen und Zeit haben, ist dies eine Überlegung wert.

Vollständige Liste von Microsoft CDN hier. http://www.asp.net/ajaxlibrary/cdn.ashx

Sie wurden inzwischen in ajax.aspnetcdn.com umbenannt , wodurch die Wahrscheinlichkeit einer Blockierung durch Firewall-Regeln verringert wird.

KnaveT
quelle
-3

Ich würde beides benutzen!

Da es das Google Jquery-Hosting schon viel länger gibt, sind die Chancen viel höher, dass die Leute es bereits zwischengespeichert haben als das von Microsoft, also würde ich es zuerst haben.

Persönlich würde ich so etwas verwenden -

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
}

(Ich bin mir nicht sicher, ob dies zu 100% funktioniert, aber ich wollte nur die Idee und nicht das Beispiel schreiben. Dies bezieht sich auf die von Google gehostete Jquery und nicht auf die von Microsoft, da ich den Link nicht finden konnte.)

Wil
quelle
6
jQuery wird niemals definiert, es sei denn, Sie bringen es auf Ihre Seite. Durch das Zwischenspeichern der .js-Datei doe snot wird sie standardmäßig allen Browserseiten zur Verfügung gestellt!
Falkayn
1
Dies funktioniert: S Lesen Sie das Skript erneut - wenn es nicht definiert ist, schreibt es dies und lädt?
Wil
12
Ich habe nie verstanden, warum Leute "<scr" + "ipt ..." machen
anonymer Feigling
3
"Abhängig vom Browser, der Menge des anderen vorhergehenden Javascript und der Form des Gesamtcodes wird verhindert, dass der Parser die Tags <script> und </ script> als ausführbaren Code und nicht als Zeichenfolge interpretiert geschrieben werden."
SeanJA
2
Das Problem ist, dass jQueryes nur definiert wird, wenn Sie es aktiv geladen haben. In Ihrem Skript wird der erste Zweig immer ausgeführt (es sei denn, Sie haben oben eine andere jQuery-Aufnahme), wodurch das Skript überflüssig wird.
Jensgramm